嘿,我有一个圆形图像,我想在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处理点坐标,而不是图像)