1. 程式人生 > >OpenCV泛洪填充演算法cv2.floodFill()

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()

在這裡插入圖片描述在這裡插入圖片描述