在opencv2和opencv3中使用findContours时的输出差异

时间:2018-01-08 19:31:19

标签: c++ opencv opencv3.2

我使用完全相同的步骤来查找图像的轮廓,但我在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);

输入图像为:

Input Image

使用opencv 2.4.8时的输出:

Output Opencv2

使用Opencv3.2时的输出:

enter image description here

1 个答案:

答案 0 :(得分:1)

documentation for 2.4.x提及:

  

注意:此图片会修改源图片。

documentation for 3.3.1提及:

  

由于opencv 3.2源图像未被此函数修改。

通常,您使用contourshierarchy输出参数。由于后来的版本不再修改输入图像,我会考虑副作用,这不是有用的。