簡體   English   中英

如何使用opencv替換圖像的顏色?

[英]How to replace color of image using opencv?

我正在嘗試使用 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)

發生這種情況是因為邊框的像素強度變化它不是恆定的,如下圖所示

我該如何解決這個問題並替換總邊框的顏色? 我試圖侵蝕和擴大蒙版圖像以完成虛線它沒有解決問題。 任何解決此問題的幫助建議將不勝感激。

要替換邊框,您需要一個突出的蒙版。 強烈代表邊界的蒙版。

分析 HSV 顏色空間(值)中的第三個通道給出以下結果:

在此處輸入圖像描述

在這個通道上應用一個適當的閾值會給出一個定義良好的蒙版,以后可以用它來替換顏色:

mask = cv2.threshold(hsv[:,:,2], 150, 255, cv2.THRESH_BINARY)[1]
img[th==255]=(0,0,255)

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM