2011-09-28 28 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結果,因爲這個功能不能就地操作。