len(轮廓)的含义是什么?

时间:2016-03-31 10:57:09

标签: python opencv

我一直在细菌的形象下工作,并希望从图像中获取细菌数量,并且还需要对具有特定形状和大小的细菌进行分类。 我正在使用opencv python。现在我使用轮廓法。

'int'

这给出l = 115的输出,li =一些数组值。 这意味着什么?

请帮助我找到答案..下面的大肠图片:

enter image description here

2 个答案:

答案 0 :(得分:2)

轮廓连接连续点并将所有点放在一个数组中。因此,此数组中的每个元素可能对应于不同的细菌(或错误检测,因为连接的颜色组是阴影等)。

当您说len(contours)时,您将获得此数组中的元素数。因此,您可以粗略估计细菌数量。

在您的情况下,有115种细菌或颜色与周围环境不同,可能是也可能不是细菌。当您为它们定义列表并打印列表时,您将获得此列表中每个元素的属性,因此您将获得每个“连接点组”或每个“可能是细菌的对象”的属性。它真的很简单。

如果你意识到你有很多错误的检测,那就是你做的事情:

  • 一组细菌出现在一起:

    您对图像进行阈值处理(将其转换为黑白图像)并首先使用erode功能。然后使用dilate函数删除其连接。然后再次使用findContours

  • 检测到的污渍为细菌:

    使您的阈值仅覆盖细菌颜色范围,因此其他所有内容都将被忽略。

请参阅下面的消息来源,它们可能有所帮助:

http://docs.opencv.org/2.4/doc/tutorials/imgproc/shapedescriptors/find_contours/find_contours.html

http://docs.opencv.org/trunk/d4/d73/tutorial_py_contours_begin.html#gsc.tab=0

答案 1 :(得分:0)

var nextMonth = addMonths(new Date(), 1); 返回轮廓列表,其中每个轮廓是一个numpy点数组(x,y坐标为2列)。 cv2.findCountours是列表len(foo)的长度。因此,在您的情况下,它找到了115个轮廓,而您的foo只是li列表的副本。

您可以使用drawContours function轻松检查轮廓。

contours