OpenCV中floodfill的使用(洪水填充)(两种填充方式)
关键是理解参数的意义和作用,具体以于代码体现,高低值用于判定是否填充
第一种填充方式:以高低值判断填充区域
第二种填充方式:以被1包围的的闭合空间作为填充区域
代码实现:
import cv2
#泛洪填充的使用
#泛洪填充的使用
# 1.FLOODFILL_FIXED_RANGE 以高低值判断填充区域
img = cv2.imread('cat.jpg')
cv2.imshow('img',img)
mask = np.zeros([img.shape[0]+2,img.shape[1]+2],np.uint8) #+2是使用要求
#floodfill的参数:1.操作图像 2.掩膜 3.起始像素点 4.填充颜色 5.填充颜色的低值 6.填充颜色的高值 7.填充方法
cv2.floodFill(img,mask,(30,30),(255,100,100),(20,20,20),(50,50,50),cv2.FLOODFILL_FIXED_RANGE)
cv2.imshow('newimg',img)
cv2.waitKey()
#2.FLOODFILL_MASK_ONLY 以1的闭合空间作为填充区域
image = np.zeros([400,400,3],np.uint8)
image[100:300,100:300,:] = 255
cv2.imshow('image',image)
mask = np.ones([402,402,1],np.uint8) #将要填充的区域用1围起来
mask[101:301,101:301] = 0
mask[10:150,10:150] = 0 #与初始像素点无连接的区域不会填充
#省略高低值参数
cv2.floodFill(image,mask,(200,200),(255,10,100),cv2.FLOODFILL_MASK_ONLY)
cv2.imshow('newimage',image)
cv2.waitKey()
运行结果: