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 は、RGB ではなく BGR 形式の画像を処理します。したがって、色変換ラインを cv.CvtColor(frame, FrameHSV, cv.CV_BGR2HSV) に修正する必要があります。これにより、HSV 境界検出の前に画像が正しく変換されることが保証されます。
これらの調整を組み込むことで、より有望な結果が得られます。
[改善された検出の画像]
ただし出力は完璧ではありませんが、オレンジ色の蓋の検出が向上しています。誤検出は、まぶたに対応する最大の輪郭を選択することで最小限に抑えることができます。
結論
適切な HSV 境界を選択するには、スケールの差異と適切な画像形式の変換を考慮する必要があります。これらの問題に対処することで、OpenCV の cv::inRange を使用して色検出の精度を向上させることができます。
以上がOpenCV で正確な色検出のために HSV 境界を最適化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。