opencv學習(八):floodFill填充函式
阿新 • • 發佈:2018-12-08
一、指定顏色填充:
(1)程式碼如下:
#匯入cv模組 import cv2 as cv import numpy as np #泛洪填充 def fill_color_demo(image): #彩色圖片的填充 copyImg=image.copy() h,w=image.shape[:2] mask=np.zeros([h+2,w+2],np.uint8) cv.floodFill(copyImg,mask,(30,30),(0,255,2555),(100,100,100),(50,50,50),cv.FLOODFILL_FIXED_RANGE) cv.imshow("fill_color_demo",copyImg) print("------------Hi,Python!-------------") # 讀取影象,支援 bmp、jpg、png、tiff 等常用格式 src = cv.imread("F:/Projects/images/2.jpg") #建立視窗並顯示影象 cv.namedWindow("input image",cv.WINDOW_AUTOSIZE) cv.imshow("input image",src) #顯示原圖 fill_color_demo(src) cv.waitKey(0) #釋放視窗 cv.destroyAllWindows()
(2)效果:
(3)說明
floodFill函式:漫水填充演算法:我覺得叫顏色替換好一些
官方函式原型:floodFill(image, mask, seedPoint, newVal, loDiff=None, upDiff=None, flags=None):
通俗解釋:floodFill( 1.操作的影象, 2.掩模, 3.起始畫素值,4.填充的顏色, 5.填充顏色的低值, 6.填充顏色的高值 ,7.填充的方法)
(4)填充的方法
彩色影象一般是FLOODFILL_FIXED_RANGE 指定顏色填充
還有一種是FLOODFILL_MASK_ONLY,mask的指定的位置為零時才填充,不為零不填充
函式操作如下:
#匯入cv模組 import cv2 as cv import numpy as np def fill_binary(): #二值填充 image=np.zeros([400,400,3],np.uint8) image[101:301,101:301,:2]=0 cv.imshow("fill_binary",image) mask=np.ones([402,402,1],np.uint8) mask[101:301,101:301]=0 cv.floodFill(image,mask,(200,200),(100,2,255),cv.FLOODFILL_MASK_ONLY) cv.imshow("fill_binary", image) print("------------Hi,Python!-------------") # 讀取影象,支援 bmp、jpg、png、tiff 等常用格式 src = cv.imread("F:/Projects/images/2.jpg") #建立視窗並顯示影象 cv.namedWindow("input image",cv.WINDOW_AUTOSIZE) cv.imshow("input image",src) #顯示原圖 fill_binary() """ face=src[50:150,30:140] gray=cv.cvtColor(face,cv.COLOR_BGR2GRAY)#轉為灰度圖片 backface=cv.cvtColor(gray,cv.COLOR_GRAY2BGR)#轉為RGB src[50:150,30:140]=backface cv.imshow("face",src) """ cv.waitKey(0) #釋放視窗 cv.destroyAllWindows()
效果: