我想使用查找轮廓和drawcontour函数在二进制图像中标记对象。

我也想知道在findcontour函数的输出数组中存储了什么数据。

此外,还有其他合适的方法可以执行上述操作吗?

最佳答案

@berak的评论已经回答了。我将添加输出的外观部分。考虑下面是5倍放大版本的35x62图像。该图像有6个斑点或对象,每个斑点或对象都有一个相应的轮廓。

c++ - 如何使用C++读取opencv中findcontour函数输出中存储的数据-LMLPHP

上面的图像存储在Mat对象im中。 findContour被应用为
cv::findContours(im.clone(), contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
findContour的输出是一个vector<vector<Point>>对象contours,如下所示:

c&#43;&#43; - 如何使用C&#43;&#43;读取opencv中findcontour函数输出中存储的数据-LMLPHP

因此,它有6个元素,每个元素对应一个轮廓。让我们以contours[0]为例。看起来像:

c&#43;&#43; - 如何使用C&#43;&#43;读取opencv中findcontour函数输出中存储的数据-LMLPHP
contours[0]具有五个元素,每个元素都存储形成轮廓的像素的坐标。

09-16 08:45