polarToCart和cartToPolar

polarToCart和cartToPolar

嘿,我有一个圆形图像,我想在openCV中做笛卡尔。

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

经过互联网上的一些挖掘。我发现实际上有称为logPolar,polarToCart和cartToPolar的函数。但是OpenCV官方文档缺少使用它们的信息。由于我不太了解这些参数,因此我无法真正使用它们
那么有人可以给我(实际上我想很多人在寻找它)使用这些功能的合适例子吗?
以防万一我也分享我的示例图像。

提前致谢

最佳答案

如果您使用的是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();

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

[编辑:]

如果仍在使用opencv2.4,则只能使用arcane 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处理点坐标,而不是图像)

09-06 21:30