在opencv的findContours中,cv.RETR_FLOODFILL做什么?

时间:2019-12-25 13:30:13

标签: python opencv image-processing

在opencv documentation中说:

  

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

将转换后的图像发送到函数后,我得到了18万个轮廓,如果我将其绘制出来,则会出现下面的黑色混乱。那么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

enter image description here

1 个答案:

答案 0 :(得分:0)

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

  

1-彼此连接

     

2个强度值彼此接近

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