python - 在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
解决方案
我认为它可以完成任何功能cv2.floodFill
。查找所有像素:
1-相互连接
2-具有彼此接近的强度值
并将它们视为一个连接的组件。例如,在您的示例图像中,您有 183295 组像素,它们粘在一起并具有接近的强度。