2011-08-09 4 views
2

イメージを修正しようとしています。私は点の対応があり、行列F1とF2の両方を計算しました。その後、私は是正したい。以下は、エラーは、次の透視変換にcv :: warpPerspectiveを使用するにはどうすればいいですか?

error: in passing argument 2 of ‘void cv::warpPerspective(const cv::Mat&, cv::Mat&, const cv::Mat&, cv::Size, int, int, const cv::Scalar&)’ 

と私は思い

CvMat* rectified1 = cvCreateMat(imgL->width,imgL->height,imgL->depth); 


    cv::warpPerspective(imgL, *rectified1, F1,size); 


    cvSaveImage("rectified1.png", imgL); 

を次のようにCvMatのを作成して行う場合は、エラーが画像を保存している私のコード

 cv::Mat F1(4,4, CV_64FC1); 
    cv::Mat F2(4,4, CV_64FC1); 

    CvMat* points1 = cvCreateMat(8,1,CV_64FC2); 
CvMat* points2 = cvCreateMat(8,1,CV_64FC2); 



    for (int i=0; i<8; i++) { 
       cvSet2D(points1,i,0,cvScalar(gt[i].xL,gt[i].yL)); 
     cvSet2D(points2,i,0,cvScalar(gt[i].xR,gt[i].yR)); 
    } 

    cv::Size size (imgL->width, imgL->height); 
    cv::stereoRectifyUncalibrated(points1, points2, F, size, F1, F2); 


IplImage* rectL = cvCreateImage(cvSize(imgL->width,imgL->height), imgL->depth, imgL->nChannels); 


cv::warpPerspective(imgL, rectL , F1, size); 


cvSaveImage("rectL.jpg", rectL); 

です。この配列は認識されないと言います。

誰かが私を助けてくれたらと思っています。

ありがとうございます。

答えて

3

cvMatcv::Matは2つの異なるものです。 cvMatis obsolete。すべてをcv :: Matに変換すると、問題を処理するはずです。