c++ - opencv 中的 polarToCart 和 cartToPolar 函数

标签 c++ opencv image-processing

嘿,我有一个圆形图像,我想在 openCV 中制作一个笛卡尔坐标。

我已经在 matlab 上成功完成了,但是我想在 OpenCV 上完成。

在互联网上进行了一些挖掘之后。我发现实际上有称为 logPolar、polarToCart 和 cartToPolar 的函数。然而 OpenCV 官方文档缺乏使用它们的信息。由于我不太了解这些函数所采用的参数,因此我无法真正使用它们 那么有人可以给我(实际上我认为很多人都在寻找它)合适的例子来使用这些功能吗? 以防万一我也分享了我的示例图片。

enter image description here

提前致谢

最佳答案

如果你使用的是 opencv3,你可能需要 linearPolar :

请注意,对于这两个版本,您需要一个单独的 src 和 dst 图像(不能就地工作)

#include "opencv2/opencv.hpp"  // needs imgproc, imgcodecs & highgui

Mat src = imread("my.png", 0); // read a grayscale img
Mat dst; // empty.
linearPolar(src,dst, Point(src.cols/2,src.rows/2), 120, INTER_CUBIC );
imshow("linear", dst);
waitKey();

enter image description here

logPolar :

logPolar(src,dst,Point(src.cols/2,src.rows/2),40,INTER_CUBIC );

enter image description here

[编辑:]

如果你还在使用opencv2.4,你只能使用神秘的c-api函数,并且需要IplImage转换(不推荐):

Mat src=...;
Mat dst(src.size(), src.type()); // yes, you need to preallocate here

IplImage ipsrc = src; // new header, points to the same pixels
IplImage ipdst = dst;


cvLogPolar( &ipsrc, &ipdst, cvPoint2D32f(src.cols/2,src.rows/2), 40, CV_INTER_CUBIC);

// result is in dst, no need to release ipdst (and please don't do so.)

(polarToCart 和 cartToPolar 处理点坐标,而不是图像)

关于c++ - opencv 中的 polarToCart 和 cartToPolar 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27710249/

相关文章:

image-processing - 图像处理项目的遗传算法

matlab - 如何在 MATLAB 中计算环的半径?

c++ - ITK快速行进输出

c++ - 后续用C++对Files进行读写操作

c++ - 如果 std::vector 在释放时按值返回?

opencv - 在 OpenCV 中使用小波变换进行伤口分割

python - OpenCV Blob 检测器未检测到白色 Blob

c++ - 返回对临时(内置类型)的引用

c++ - 在 C++ 中分配数据点的二维数组

c++ - C++中的奇怪指针