現在、ユーザーが緑色を検出するアプリを作成しています。私はこの写真をテストに使用します:
私の問題は、緑色のピクセルを検出できないことです。私が青い色で作業する前に、すべてがうまくいきました。 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
に変換します。しかし、それは機能しません。サンプリングしたピクセルすら検出されません。どうしましたか?前もって感謝します。
ミキの答えを使用して:
緑色は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
結果のマスクは次のようになります。
詳細は この回答 を参照してください。