【问题标题】:output differences when using findContours in opencv2 and opencv3在 opencv2 和 opencv3 中使用 findContours 时的输出差异
【发布时间】:2018-06-17 19:45:56
【问题描述】:

我使用完全相同的步骤来查找图像的轮廓,但在 Opencv 2.4.8 和 Opencv 3.2 中我得到了两个不同的结果!有人知道为什么吗? 流程如下:

std::vector<std::vector<cv::Point> > contours;
    std::vector<cv::Vec4i> hierarchy;

    cv::imwrite("binImageInB.jpg", binImageIn);

    // find contour of the binary image 
    cv::findContours( binImageIn, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, cv::Point(0, 0) ); // Find the contours in the image   // save

    cv::imwrite("binImageIn.jpg", binImageIn);

输入图像是:

使用opencv 2.4.8时的输出:

以及使用Opencv3.2时的输出:

【问题讨论】:

    标签: c++ opencv opencv3.2


    【解决方案1】:

    documentation for 2.4.x 提到:

    注意:源图片被此函数修改。


    documentation for 3.3.1 提到:

    由于opencv 3.2源图像没有被这个函数修改。


    通常,您使用contourshierarchy 输出参数。由于后来的版本不再修改输入图像,我认为这是一个副作用,它并没有用处。

    【讨论】:

    • 这令人困惑......我使用的是 3.2,在文档中,它没有提到输入图像是否已更改docs.opencv.org/3.2.0/d3/dc0/…
    • @Samer 你是对的。似乎他们忘记将该信息添加到 3.2 和 fixed it later 的文档 cmets 中。
    猜你喜欢
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    • 2018-10-15
    • 2019-08-14
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多