如何混合OpenCV 1.0和OpenCV 2.0

How to mix OpenCV 1.0 and OpenCV 2.0

本文关键字:OpenCV 何混合 混合      更新时间:2023-10-16

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

错误:'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;
}

把它拆开吧,反正我也要学点东西。

试试

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);

我已经创建了新的Mat来存储cvLogPolar的结果,因为这个函数不能在原地操作。