ホームページ >バックエンド開発 >C++ >画像内の正確な赤色検出のために OpenCV の inRange 関数を最適化するにはどうすればよいでしょうか?

画像内の正確な赤色検出のために OpenCV の inRange 関数を最適化するにはどうすればよいでしょうか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-19 09:09:021057ブラウズ

How can OpenCV's inRange function be optimized for accurate red color detection in images?

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;

これら 2 つのマスクを組み合わせることで、赤色の範囲をより正確にキャプチャします。

代替アプローチ: 反転画像 HSV

この問題に対する別の観点は、HSV に変換する前に元の BGR 画像を反転することです。反転画像では赤色がシアンになり、検出が容易になります。

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。