首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用cv::perspective进行透视转换?

如何使用cv::perspective进行透视转换?
EN

Stack Overflow用户
提问于 2011-08-10 02:27:47
回答 1查看 2.7K关注 0票数 2

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

代码语言:javascript
复制
     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);

错误如下所示

代码语言:javascript
复制
    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,如下所示

代码语言:javascript
复制
    CvMat* rectified1 = cvCreateMat(imgL->width,imgL->height,imgL->depth);


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


   cvSaveImage("rectified1.png", imgL);

那么错误就出在保存图像上。它说这个数组不能被识别。

我想知道有没有人能在这方面帮我。

非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-11 00:20:00

cvMatcv::Mat是两个不同的东西。cvMat is obsolete.如果你把所有东西都转换成cv::Mat,它应该会解决你的问题。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7001006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档