1

我正在使用完全相同的步骤来查找图像的轮廓,但是在 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 时的输出:

输出 Opencv2

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

在此处输入图像描述

4

1 回答 1

1

2.4.x的文档提到:

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


3.3.1的文档提到:

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


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

于 2018-01-08T22:41:56.360 回答