簡體   English   中英

使用OpenCV和Python檢測HSV圖像顏色的麻煩

[英]Trouble with detecting color from HSV image using OpenCV and Python

我正在嘗試使用OpenCV和Python執行簡單的彩色對象檢測。

我已閱讀了幾個教程,但遇到一個讓我無法進步的令人困惑的問題。 雖然我提供了正確的數據HSV,但我的程序似乎沒有檢測到那種顏色的對象。

我使用這張圖片(抱歉我的網絡攝像頭質量很差):

樣品

為了檢測紅色物體,我恢復了HSV顏色數據:

顏色數據

這是我的代碼:

YELLOW = 30
BLUE = 210
GREEN = 145
RED = 320

color = RED

img = cv2.imread("sample.png")

hue = color // 2

lower_range = np.array([max(0, hue - 10), 0, 0], dtype=np.uint8)
upper_range = np.array([min(180, hue + 10), 255, 255], dtype=np.uint8)

img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

mask = cv2.inRange(img, lower_range, upper_range)

binary_img = cv2.bitwise_and(img_hsv, img_hsv, mask=mask)
binary_img = cv2.cvtColor(binary_img, cv2.COLOR_BGR2GRAY)
_, binary_img = cv2.threshold(binary_img, 127, 255, cv2.THRESH_BINARY)

cv2.imshow('sample', binary_img)
cv2.waitKey(0)

結果:

結果

其他顏色的結果是正確的(不完美,因為我猜的質量很差),但我不能得到紅色的東西。 然而,HSV轉換的圖像非常明確:

HSV圖像

你知道我做錯了什么嗎?

您正在做的一切正確,唯一的問題是您在BGR圖像而不是HSV上應用閾值。

更改:

mask = cv2.inRange(img, lower_range, upper_range)

mask = cv2.inRange(img_hsv, lower_range, upper_range)

我測試了它看起來很好。 我想你需要一些形態學操作來得到你的最終結果。

暫無
暫無

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

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