【问题标题】:How to use cv::warpPerspective for the perspective transformation?如何使用 cv::warpPerspective 进行透视变换?
【发布时间】:2011-08-11 00:19:59
【问题描述】:

我正在尝试纠正图像。我有点对应关系,我计算了矩阵 F1 和 F2。在那之后,我想纠正。以下是我的代码

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

错误如下

    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 如下

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


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


   cvSaveImage("rectified1.png", imgL);

那么错误在于保存图像。它说这个数组无法识别。

我想知道是否有人可以帮助我。

非常感谢。

【问题讨论】:

    标签: opencv


    【解决方案1】:

    cvMatcv::Mat 是两个不同的东西。 cvMatis obsolete。如果您将所有内容都转换为 cv::Mat 它应该可以解决您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      • 2018-10-16
      • 1970-01-01
      相关资源
      最近更新 更多