1

画像の下 30% の平均色を取得する方法を作成しようとしています。各ピクセルを個別に調べて色を取得し、それらを合計して、結果をチェックしたピクセルの量で割ることで、これを実行しようとしています。私のコードは次のとおりです。

int imageWidth = image.getWidth();
int imageHeight = image.getHeight();
int pixel;
int pixelSumRed = 0;
int pixelSumBlue = 0;
int pixelSumGreen = 0;
for (int i = 0; i < 100; i++) {
    for (int j = 70; j < 100; j++) {
        pixel = image.getPixel((int) Math.round((i/100)*imageWidth), (int) Math.round((j/100)*imageHeight));
        pixelSumRed += Color.red(pixel);
        pixelSumBlue += Color.blue(pixel);
        pixelSumGreen += Color.green(pixel);
        Log.d("Checks", "Pixel " + i + ", " + j + " red: " + Color.red(pixel) + ", green: " + Color.green(pixel) + ", blue: " + Color.blue(pixel));
        }
    }

averagePixelRed = pixelSumRed / 3000;
averagePixelBlue = pixelSumBlue / 3000;
averagePixelGreen = pixelSumGreen / 3000;

ここで、各ピクセルに同じ色が印刷されることに気付きました。そのため、1 つの画像では各ピクセルで RGB = 210、44、70 を取得し、別の画像では各ピクセルで RGB = 12、0、90 を取得します。 . 明らかに何かがおかしいのですが、それが何かを見つけることができません。皆さんが私を助けてくれることを願っています。

4

1 に答える 1

1

整数除算の驚異!i または j を 100 で割ると、整数除算として行われ、切り捨てられます。毎回 0 になります。次のように並べ替えることができます。

(i * imageWidth) / 100
于 2013-06-07T21:36:47.253 に答える