他のすべての色を無視したい。白と黄色の間の色を数えたいだけです(明るい黄色、薄い黄色..白まで)。次に、特定の画像がどの程度黄色であるかを評価します。それは可能ですか?
私は遊んでBitmap.getPixel()
いますが、他の色を無視する方法がわかりません。
この例では、明るい黄色と白の間の色が多いため、画像 1 が選択されます。
黄色がかった色だけを検出するにはどうすればよいですか?
ピクセルの HUE に注目します。このコードの使用:
// get HSV values for the pixel's colour
float[] pixelColorHsv = new float[3];
Color.colorToHSV(Bitmap.getPixel(x,y), pixelColorHsv);
黄色とは何かはあなた次第かもしれませんが、範囲は 72 から 49 の間である可能性があり (このツールで遊んでアイデアを得ることができます)、この範囲内のどこにあるか、または明るさと彩度がどれくらい高いか低いかを定量化できます。
このBitmap.getPixel(int x, int y)
メソッドは、Color
そのピクセルの RGB 値を持つオブジェクトを返します。黄色は赤と緑の組み合わせなので、黄色の RGB トリプルは (255, 255, 0) になりますよね? 暗くなると、赤と緑の両方の値が下がります。明るくなると、青の値が上がります。したがって、基本的には、特定のピクセルの RGB 値が (255, 255, 0) にどの程度「近い」かを検出し、画像全体の近似値を累積する方法を見つける必要があります。2 番目の画像についても同じことを行い、2 つの結果を比較します。