web-dev-qa-db-ja.com

OpenCV Android緑色の検出

現在、ユーザーが緑色を検出するアプリを作成しています。私はこの写真をテストに使用します: enter image description here

私の問題は、緑色のピクセルを検出できないことです。私が青い色で作業する前に、すべてがうまくいきました。 RGBのさまざまな組み合わせを試しましたが、何も検出できません。緑に問題があるのか​​、検出範囲に問題があるのか​​知りたかったので、(0, 255, 0)を使用してペイントで画像を作成しました。なぜこの円が見えないのですか?私はこのコードを検出に使用します:

Core.inRange(hsv_image, new Scalar([I change this value]), new Scalar(60, 255, 255), ultimate_blue);

間違った範囲を設定した可能性がありますが、Photoshopを使用して緑色のピクセルの1つの色を取得し、そのRGB値をHSVに変換します。しかし、それは機能しません。サンプリングしたピクセルすら検出されません。どうしましたか?前もって感謝します。

ミキの答えを使用して:

enter image description here

6

緑色はHSV空間でH = 120であり、範囲は[0、360]です。

OpenCVはH値を半分にして[0,255]の範囲に合わせるため、H値は[0、360]の範囲ではなく、[0、180]の範囲にあります。 SとVはまだ範囲[0、255]にあります。

結果として、緑のHの値は60 = 120/2です。

上限と下限は次のようになります。

// sensitivity is a int, typically set to 15 - 20 
[60 - sensitivity, 100, 100]
[60 + sensitivity, 255, 255]

[〜#〜]更新[〜#〜]

画像が非常に暗いため、Vの下限を使用する必要があります。次の値を使用します。

sensitivity = 15;
[60 - sensitivity, 100, 50]  // lower bound
[60 + sensitivity, 255, 255] // upper bound

結果のマスクは次のようになります。

enter image description here

詳細は この回答 を参照してください。

21
Miki