画像を読み込み、各ピクセルの色情報を見つける Java のプロジェクトを扱っています。青い色の範囲を使用して、空のように見える色の定義で空を検出する必要があります。当初は RGB を使用するのが最善のように思われましたが、これにはすべての青の色合い (数えきれないほど) の定義が必要になります。色ごとにHSVのしきい値が使用されている分析方法を見つけましたが、色の範囲を使用していくつかのライブラリをロードする方法、解決方法がわかりません。助けてくれてありがとう。
質問する
1819 次
1 に答える
3
java.awt.Color
静的メソッドを使用して、a を HSV 値に変換できますRGBtoHSB(...)
。次に、色相を取得し、それを、目的のために「青」を構成する範囲の境界と比較できます-たとえば
private static final float MIN_BLUE_HUE = 0.5f; // CYAN
private static final float MAX_BLUE_HUE = 0.8333333f; // MAGENTA
public static boolean isBlue(Color c) {
float[] hsv = Color.RGBtoHSB(c.getRed(), c.getGreen(), c.getBlue(), null);
float hue = hsv[0];
if (hue >= MIN_BLUE_HUE && hue <= MAX_BLUE_HUE){
return true;
}
return false;
}
と の開始値をいくつか提示しましたが、MIN_BLUE_HUE
とMAX_BLUE_HUE
に設定する値は、「青」として受け入れる意思があるかどうかによって異なります。つまり、どれだけの緑または紫が存在する可能性があり、それでも空として受け入れられるのでしょうか?MIN_BLUE_HUE
MAX_BLUE_HUE
于 2012-05-22T16:48:57.167 に答える