计算机视觉(使用 opencv c++ 对齐),出现错误

Posted

技术标签:

【中文标题】计算机视觉(使用 opencv c++ 对齐),出现错误【英文标题】:Computer vision (Alignment using opencv c++), getting error 【发布时间】:2018-07-21 09:07:25 【问题描述】:

我正在尝试在 Visual Studio 中使用 getPerspectiveTransformgetAffineTransform 函数,但是当我运行代码时,我会看到此消息并且代码根本无法正常工作。

这是我的代码的一部分:

    //Mat im_src = imread("img_name.png",-1);
    // Five corners of the source image
    vector<Point2f> pts_src;
    pts_src.push_back(Point2f(106, 115));
    pts_src.push_back(Point2f(141, 111));
    pts_src.push_back(Point2f(129, 134));
    pts_src.push_back(Point2f(109, 150));
    pts_src.push_back(Point2f(147, 146));


    // Read destination
    // Five corners of the book in destination image.
    vector<Point2f> pts_dst;
    pts_dst.push_back(Point2f(30.2946, 51.6963));
    pts_dst.push_back(Point2f(65.5318, 51.5014));
    pts_dst.push_back(Point2f(48.0252, 71.7366));
    pts_dst.push_back(Point2f(33.5493, 92.3655));
    pts_dst.push_back(Point2f(62.7299, 92.2041));

    // Calculate Homography
    Mat h = cv::getPerspectiveTransform(pts_src, pts_dst);
    //The error is due to the previous line 
    // Output image
    Mat im_out;
    // Warp source image to destination based on homography
    Size imgSize(112, 96);
    warpPerspective(img, im_out, h, imgSize);

    // Display images
    imshow("Source Image", im_src);
    imshow("Warped Source Image", im_out);

这是发生的错误:

【问题讨论】:

【参考方案1】:

根据opencv文档:

https://docs.opencv.org/2.4/modules/imgproc/doc/geometric_transformations.html#Mat%20getPerspectiveTransform(InputArray%20src,%20InputArray%20dst)

cv::getPerspectiveTransform()

使用两个 4 元素向量。您传递了 5 元素向量 - 这可能是您问题的根源。如果您想使用更多积分,您应该考虑

cv::findHomography()

带有 RANSAC 标志

【讨论】:

谢谢它有帮助,另外我必须将 Point2f 更改为仅 Point

以上是关于计算机视觉(使用 opencv c++ 对齐),出现错误的主要内容,如果未能解决你的问题,请参考以下文章

OpenCv+VS

opencv想到的

OpenGL 与 OpenCV 相结合的计算机视觉教程 [关闭]

计算机视觉学习----初见OpenCV

opencv3计算机视觉+Python

C++基于 OpenCV 的人脸识别(强烈推荐)