首页 > 解决方案 > 在opencv的findContours中,cv.RETR_FLOODFILL是做什么的?

问题描述

在 opencv文档中它说:

如果 mode 等于 RETR_CCOMP 或 RETR_FLOODFILL,则输入也可以是标签的 32 位整数图像 (CV_32SC1)。

将转换后的图像发送到函数后,我得到了 180k 轮廓,如果我绘制它们,则会导致下面的黑色混乱。那么做RETR_FLOODFILL什么以及如何正确使用它?

img = cv2.imread("lena.png")
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, contours, _ = cv2.findContours(image=np.array(img, dtype=np.int32),  mode=cv2.RETR_FLOODFILL, method=cv2.CHAIN_APPROX_SIMPLE)
len(contours)
Out[7]: 183295

在此处输入图像描述

标签: pythonopencvimage-processing

解决方案


我认为它可以完成任何功能cv2.floodFill。查找所有像素:

1-相互连接

2-具有彼此接近的强度值

并将它们视为一个连接的组件。例如,在您的示例图像中,您有 183295 组像素,它们粘在一起并具有接近的强度。


推荐阅读