使用cv::inRange (OpenCV) 選擇最佳HSV 邊界進行顏色偵測
在影像處理中,經常使用HSV 顏色空間用於顏色檢測。選擇適當的 HSV 上下邊界對於準確識別目標顏色至關重要。本問題探討了咖啡罐上包含橙色蓋子的圖像的選擇過程。
儘管為蓋子提供了估計的HSV 中心值(22, 59, 100),但最初嘗試使用邊界(18 、40、90)和(27、255、255)的結果並不令人滿意。為了解決這個問題,我們必須考慮 HSV 比例和影像格式中的潛在問題。
問題 1:HSV 比例差異
不同的應用程式可能使用不同的 HSV 比例。 GIMP採用H=0-360,S=0-100,V=0-100,而OpenCV採用H:0-179,S:0-255,V:0-255。在這種情況下,GIMP 色調值 (22) 應減半以匹配 OpenCV 的比例,導致範圍為 (5, 50, 50) - (15, 255, 255)。
問題2:影像格式轉換
OpenCV 操作的是 BGR 格式的影像,而不是 RGB。因此,需要將顏色轉換行修改為cv.CvtColor(frame,frameHSV,cv.CV_BGR2HSV)。這確保了影像在 HSV 邊界檢測之前正確轉換。
透過合併這些調整,我們獲得了更有希望的結果:
[改進的檢測影像]
雖然輸出並不完美,它改進了對橙色蓋子的檢測。透過選擇與蓋子相對應的最大輪廓,可以最大限度地減少錯誤檢測。
結論
選擇適當的 HSV 邊界需要考慮尺度差異和適當的影像格式轉換。透過解決這些問題,我們可以在 OpenCV 中使用 cv::inRange 來提高顏色偵測的準確性。
以上是如何在 OpenCV 中優化 HSV 邊界以實現準確的顏色檢測?的詳細內容。更多資訊請關注PHP中文網其他相關文章!