OpenCV泛洪填充演算法cv2.floodFill()
阿新 • • 發佈:2018-11-21
函式定義:
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()