我正在嘗試使用 opencv 替換影像中的不同顏色。
圖片如下
我正在嘗試將邊框顏色和主要物件顏色(黃色陰影)替換為其他隨機不同的顏色,例如橙色和紅色,首先我嘗試更改邊框顏色,如下面的代碼
image = cv.imread(r'image.png')
hsv=cv.cvtColor(image,cv.COLOR_BGR2HSV)
yellow_lo=np.array([0,0,240])
yellow_hi=np.array([179,255,255])
mask=cv.inRange(hsv,yellow_lo,yellow_hi)
我得到如下蒙版影像
如您所見,邊框顏色的線條之間存在間隙,當我替換此蒙版影像的顏色時,我仍然可以看到影像中存在的原始顏色,如下所示,線條不是連續的紅色
image[mask>0]=(0,0,255)
發生這種情況是因為邊框的像素強度變化它不是恒定的,如下圖所示
我該如何解決這個問題并替換總邊框的顏色?我試圖侵蝕和擴大蒙版影像以完成虛線它沒有解決問題。任何解決此問題的幫助建議將不勝感激。
uj5u.com熱心網友回復:
要替換邊框,您需要一個突出的蒙版。強烈代表邊界的蒙版。
分析 HSV 顏色空間(值)中的第三個通道給出以下結果:

在這個通道上應用一個適當的閾值會給出一個定義明確的蒙版,以后可以用它來替換顏色:
mask = cv2.threshold(hsv[:,:,2], 150, 255, cv2.THRESH_BINARY)[1]
img[th==255]=(0,0,255)

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/492804.html
標籤:Python python-3.x opencv 图像处理
上一篇:我無法獲得正確的單應點
