使用 OpenCV 增強紅色偵測
準確的顏色偵測在各種電腦視覺任務中至關重要。本文解決了使用 OpenCV 庫檢測紅色物體的具體挑戰。透過探索 HSV 色彩空間和細化閾值參數,我們的目標是改進影像中紅色矩形的偵測。
問題陳述
給定一個具有紅色矩形,目標是使用 OpenCV 的 inRange 函數和 HSV 顏色空間來隔離和檢測紅色物件。然而,使用提供的參數範圍進行的初步嘗試並未產生令人滿意的結果。
建議的解決方案:HSV 色彩空間
在 HSV 空間中,紅色色調環繞著180 度值。因此,為了有效檢測紅色,我們需要考慮[0, 10] 和[170, 180] 的值:
inRange(hsv, Scalar(0, 70, 50), Scalar(10, 255, 255), mask1); inRange(hsv, Scalar(170, 70, 50), Scalar(180, 255, 255), mask2); Mat1b mask = mask1 | mask2;
透過組合這兩個掩模,我們可以更準確地捕捉紅色範圍,如改進後的結果所示。
替代方法:倒置影像HSV
解決這個問題的另一個角度是在將原始 BGR 影像轉換為 HSV 之前對其進行反轉。在倒置影像中,紅色變成青色,使其更容易檢測:
Mat3b bgr_inv = ~bgr; cvtColor(bgr_inv, hsv_inv, COLOR_BGR2HSV); inRange(hsv_inv, Scalar(90 - 10, 70, 50), Scalar(90 + 10, 255, 255), mask);
這種方法允許我們在倒置HSV 影像中搜尋單一目標顏色(青色),提供有效的替代方案到雙範圍方法。
結論
透過細化顏色來偵測參數和利用 HSV 顏色空間的特定屬性,我們可以使用 OpenCV 顯著增強對紅色物體的偵測。提供的解決方案說明了 OpenCV 在處理具有挑戰性的顏色檢測場景方面的多功能性和有效性。
以上是如何優化 OpenCV 的 inRange 函數以實現影像中準確的紅色檢測?的詳細內容。更多資訊請關注PHP中文網其他相關文章!