OpenCV泛洪填充算法cv2.floodFill()

函数定义:
cv2.floodFill(img,mask,seed,newvalue(B,G,R),(loDiff1,loDiff2,loDiff3),(upDiff1,upDiff2,upDiff3),flag)
解析:

  • img:需要处理的图像
  • mask:一般设置为长宽比img大2的通道为1的数组,其中需要处理的区域设置为0,不需要处理的区域设置为1
  • seed:起始像素点
  • newvalue:需要填充的颜色
  • loDiff和upDiff:需要处理的与seed颜色相近的像素点,即设seed的像素为(B0,G0,R0)。若待处理的像素的值位于(B0-loDiff,G-LoDiff,B-loDiff)到(B0+upDiff,G0+upDiff,R0+upDiff)之间的话就填充newvalue
  • flag:一般选用cv.FLOODFILL_FIXED_RANGE,即待处理像素与seed像素比较,若不使用这个flag,则待处理像素与相邻的已填充像素比较。

示例代码:

img = cv2.imread('test.png')
h,w = img.shape[:2]
mask = np.ones((h+2,w+2,1),np.uint8)
mask[150:250,150:250] = 0
cv2.floodFill(img,mask,(200,200),(0,0,255),(30,30,30),(30,30,30),cv2.FLOODFILL_FIXED_RANGE)
cv2.imshow('test',img)
cv2.imwrite('floodfill.png',img)
if cv2.waitKey(0)==27:
	cv2.destroyAllWindows()

在这里插入图片描述在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/a13602955218/article/details/84261866