首頁 >後端開發 >Python教學 >如何使用 cv2.inRange 準確地確定 OpenCV 中顏色偵測的 HSV 邊界?

如何使用 cv2.inRange 準確地確定 OpenCV 中顏色偵測的 HSV 邊界?

Susan Sarandon
Susan Sarandon原創
2024-12-16 06:44:09768瀏覽

How to Accurately Determine HSV Boundaries for Color Detection in OpenCV using cv2.inRange?

在OpenCV 中使用cv2.inRange 確定用於顏色檢測的HSV 邊界

當使用OpenCV 中的cv2.inRange 函數進行顏色檢測時,它選擇適當的HSV(色調、飽和度、值)上下邊界以準確識別目標至關重要顏色。

問題識別:

考慮包含帶有橙色蓋子的咖啡罐的圖像範例,如下所示。

[影像帶有橙色蓋子的咖啡罐]

目標是確定 HSV 邊界以隔離橙色蓋子。最初嘗試了 (18, 40, 90) 到 (27, 255, 255) 的範圍,但得到了意想不到的結果。

解 1:尺度轉換

需要注意的是,不同的應用可能會使用不同的 HSV 值尺度。 OpenCV 使用 H: 0-179、S: 0-255、V: 0-255 的範圍,而其他一些應用程式可能使用 H: 0-360、S: 0-100、V: 0-100 的範圍。因此,有必要對 HSV 值進行相應的轉換。

解決方案2:顏色空間轉換

OpenCV 使用BGR(藍色、綠色、紅色)顏色格式預設情況下,影像可能是RGB(紅色、綠色、藍)格式。要將影像正確轉換為 HSV,必須使用 cv2.COLOR_BGR2HSV 而不是 cv2.COLOR_RGB2HSV。

修訂的代碼:

import cv2
import numpy as np

image = cv2.imread('kaffee.png')

# Revised HSV boundaries considering scale conversion
ORANGE_MIN = np.array([5, 50, 50], np.uint8)
ORANGE_MAX = np.array([15, 255, 255], np.uint8)

# Convert image to HSV color space
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

# Apply color filtering
mask = cv2.inRange(hsv, ORANGE_MIN, ORANGE_MAX)

# Save the masked image
cv2.imwrite('kaffee_out.png', mask)

此修訂的方法應該在隔離咖啡罐橙色蓋子時提供更準確的結果。

以上是如何使用 cv2.inRange 準確地確定 OpenCV 中顏色偵測的 HSV 邊界?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn