直接看效果
在坐標(100,100)、(200,200)、(250,250)這3個地方一鍵填充

可以看到這個功能還是有些用處的
不過如果填充的點超過影像的尺寸填到外面就會報錯
cv.floodFill(Img2, mask, (a[i][0], a[i][1]), (127, 127, 127), (100, 100, 100), (50, 50 ,50), cv.FLOODFILL_FIXED_RANGE) #獲得每個坐標點進行填充
cv2.error: OpenCV(4.5.3) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-u4kjpz2z\opencv\modules\imgproc\src\floodfill.cpp:509: error: (-211:One of the arguments' values is out of range) Seed point is outside of image in function 'cv::floodFill'
報這樣的錯誤
另外opencv-python報錯也有其他報錯原因,比如下載方式的問題,
最好是
pip3 install opencv-contrib-python
如果已經安裝了,需要洗掉的代碼
pip uninstall opencv-python
當然,路徑問題帶中文,或空格的有時也會報錯
那么直接上本文的代碼
import cv2 as cv
import numpy as np
a = [[100, 100], [200, 200], [250, 250]]
def fill_color_demo(image,a): #定義一鍵填充顏色的函式
Img2 = image.copy() #對輸入的圖片進行復制
h, w = image.shape[:2] #獲得圖片的長寬
mask = np.zeros([h+2, w+2],np.uint8) #mask必須行和列都加2,且必須為uint8單通道陣列,填充邊緣需要多2個像素,否則會報錯
for i in range(len(a)): #對陣列內的坐標點遍歷
cv.floodFill(Img2, mask, (a[i][0], a[i][1]), (127, 127, 127), (100, 100, 100), (50, 50 ,50), cv.FLOODFILL_FIXED_RANGE) #獲得每個坐標點進行填充
#cv.floodFill,引數1,:表示輸入圖片,引數2:表示單通道的掩碼,引數3:表示泛洪演算法的起始點,引數4表示填充的顏色,引數5,6表示當前觀察像素點與鄰域像素點最大正負差值
#x坐標是從左到右,y坐標是從上到下
cv.imshow("result", Img2) #顯示結果圖片
img = cv.imread('./1.jpg') #讀入圖片
cv.imshow('input', img) #顯示輸入的圖片
fill_color_demo(img,a) #將輸入的圖片轉入定義好的填充顏色函式中
cv.waitKey(0) #imshow需要輸入這個保持視窗開著
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290534.html
標籤:其他
上一篇:在VS2019安裝OpenCV庫
