如何获得图像的平均颜色
我希望能够拍摄图像并找出平均颜色。这意味着如果图像是一半黑色半白色,我会得到一些东西之间......一些灰色阴影。它可能是最常见的单色或中位数。任何平均值都可以。
我怎么能在机器人中做到这一点。
我希望能够拍摄图像并找出平均颜色。这意味着如果图像是一半黑色半白色,我会得到一些东西之间......一些灰色阴影。它可能是最常见的单色或中位数。任何平均值都可以。
我怎么能在机器人中做到这一点。
Bitmap bitmap = someFunctionReturningABitmap();
long redBucket = 0;
long greenBucket = 0;
long blueBucket = 0;
long pixelCount = 0;
for (int y = 0; y < bitmap.getHeight(); y++)
{
for (int x = 0; x < bitmap.getWidth(); x++)
{
Color c = bitmap.getPixel(x, y);
pixelCount++;
redBucket += Color.red(c);
greenBucket += Color.green(c);
blueBucket += Color.blue(c);
// does alpha matter?
}
}
Color averageColor = Color.rgb(redBucket / pixelCount,
greenBucket / pixelCount,
blueBucket / pixelCount);
我想你必须自己做。
只需创建一个包含所有颜色的 int 数组:
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
bmp = bmp.copy(Bitmap.Config.ARGB_8888, true);
int intArray[] = new int[bmp.getWidth()*bmp.getHeight()];
bmp.getPixels(intArray, 0, bmp.getWidth(), 0, 0, bmp.getWidth(), bmp.getHeight());
然后你可以用intArray[0]获得颜色,该值可以0xFFFF0000为红色(最后6个数字是RGB颜色值)。
这是另一个简单的解决方案:
在位图中获取全尺寸图像。
创建 1*1px 的缩放位图。
获取此位图颜色。