android - 图像底部 30% 的平均颜色

标签 android image colors pixel

我正在尝试编写一种方法来获取图像底部 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;

现在,我注意到每个像素都打印了相同的颜色,因此对于一张图像,我将得到每个像素的 RGB = 210、44、70,而对于另一张图像,我将得到 RGB = 12、0、90对于每个像素。显然出了点问题,但我找不到它是什么。我希望你们能帮助我。

最佳答案

整数除法的奇迹!当你将 i 或 j 除以 100 时,它是作为整数除法完成的,并且向下舍入 - 你每次都会得到 0。您可以重新命令它执行以下操作:

(i * imageWidth) / 100

关于android - 图像底部 30% 的平均颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16993266/

相关文章:

android - 传感器的 native 模块不可用。 React-Native链接运行成功了吗?

java - 调用 setContentView(R.layout.activity_main); 时应用程序崩溃第二次

启动电子邮件 Intent 后,Android 键盘仍然可见

r - 调整 R 中图像图的色标

image - 如何确定 png "type"(png8/png24)

javascript - 为什么 javascript 不能在 if 语句中使用 .style.color

graphics - 在 Matlab 中内置颜色图

android - 选项卡上方的自定义 SherlockActionBar 布局

java - 在 libgdx 中拉伸(stretch)/压缩图像

opencv - 如何按颜色过滤OpenCv图像中的矩形区域?