在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中文網其他相關文章!