2011-09-28 5 views
0

Je veux faire une transformation polaire. Mais dans OpenCV 2.0, il ne semble pas y avoir de version C++ de la fonction cvLogPolar. Comment l'utiliser avec cv :: Mat?Comment mélanger OpenCV 1.0 et OpenCV 2.0

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

Voici mon code:

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

déchirer, je dois apprendre quelque chose de toute façon.

Répondre

1

Essayez quelque chose comme

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

J'ai créé de nouveaux tapis pour stocker les résultats de cvLogPolar car cette fonction ne peut pas fonctionner en place.