問題:
給定一個包含紅色矩形的影像,該任務是為了在HSV顏色內使用OpenCV的cv::inRange方法來增強紅色的檢測精度
原始方法:
int H_MIN = 0; int H_MAX = 10; int S_MIN = 70; int S_MAX = 255; int V_MIN = 50; int V_MAX = 255; cv::inRange( imageHSV, cv::Scalar( H_MIN, S_MIN, V_MIN ), cv::Scalar( H_MAX, S_MAX, V_MAX ), imgThreshold0 );
此方法提供的結果並不令人滿意。
改進的解決方案:
最初的方法未能解釋紅色的「包裹」 HSV 空間中 180 度。為了解決這個問題,H 範圍需要同時包含 [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;
這種更新的方法可以提高偵測結果。
替代方案做法:
另一個有效的方法是至:
Mat3b bgr_inv = ~bgr; inRange(hsv_inv, Scalar(90 - 10, 70, 50), Scalar(90 + 10, 255, 255), mask); // Cyan is 90
這個替代方法提供單一範圍檢查並產生令人滿意的結果。
以上是如何使用 OpenCV 提高 HSV 色彩空間中的紅色物體偵測精度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!