Как смешать OpenCV 1.0 и OpenCV 2.0 - PullRequest
0 голосов
/ 29 сентября 2011

Я хочу сделать полярное преобразование. Но в OpenCV 2.0, похоже, нет версии CvLogPolar для C ++. Как мне использовать это с 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;
}

Разорвите это на части, мне все равно нужно чему-то научиться.

1 Ответ

1 голос
/ 29 сентября 2011

Попробуйте что-то вроде

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, потому что эта функция не может работать на месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...