2011-09-28 68 views
0

我想做极坐标变换。但在OpenCV 2.0中,似乎没有cvLogPolar函数的C++版本。我如何与cv :: Mat一起使用它?如何混合使用OpenCV 1.0和OpenCV 2.0

错误: 'cvLogPolar' : cannot convert parameter 1 from 'cv::Mat' to 'const CvArr *'

这里是我的代码:

VideoCapture cap(1); 
try { 
    if(!cap.isOpened()) { 
     throw "Could not open capture device"; 
    } 
} catch(char* e) { 
    cerr << "Error: " << e << endl; 
} 

for(;;) { 
    Mat frame; 
    cap >> frame; 
    cvLogPolar(frame, frame, Point(frame.size().width/2, frame.size().height/2), 
     1.0f, CV_INTER_LINEAR|CV_WARP_INVERSE_MAP); 
    imshow("Preview", frame); 
    if(waitKey(30) >= 0) break; 
} 

把它拆开,我总有需要学习的东西。

回答

1

尝试像

Mat frame; 
cap >> frame; 

Mat dst(frame.size(), frame.type()); 
CvMat cvframe = frame; 
CvMat cvdst = dst; 
cvLogPolar(&cvframe, &cvdst, Point(frame.size().width/2, frame.size().height/2), 
    1.0f, CV_INTER_LINEAR|CV_WARP_INVERSE_MAP); 
imshow("Preview", dst); 

我已经创造了新的垫来存储cvLogPolar结果,因为这个功能不能就地操作。