1

我想忽略所有其他颜色。我只想计算白色和黄色之间的颜色(亮黄色,浅黄色......一直到白色)。然后对某个图像的黄色程度进行评级。那可能吗?

我一直在玩,Bitmap.getPixel()但我不知道如何忽略其他颜色。

在此处输入图像描述

在此示例中,图像 1 将是一个选择,因为它在亮黄色和白色之间具有更多颜色。

我怎样才能只检测到淡黄色?

4

2 回答 2

12

好吧,我会专注于像素的色调。使用此代码:

// get HSV values for the pixel's colour
float[] pixelColorHsv = new float[3];
Color.colorToHSV(Bitmap.getPixel(x,y), pixelColorHsv);

什么是黄色可能取决于您,但范围可能在 72 到 49 之间(您可以使用此工具来了解一下),然后您可以量化它在此范围内的位置或亮度和饱和度的高低。

于 2012-09-13T20:19:17.923 回答
1

Bitmap.getPixel(int x, int y)方法返回一个Color具有该像素 RGB 值的对象。黄色是红色和绿色的组合,所以纯黄色 RGB 三元组应该是 (255, 255, 0),对吧?如果变暗,则降低红色和绿色值。如果你变得更亮,你会提高蓝色值。因此,基本上,您需要找到一种方法来检测任何给定像素的 RGB 值与 (255, 255, 0) 的“接近”程度,然后为整个图像累积这些接近值。对第二张图像执行相同的操作,然后比较 2 个结果。

于 2012-09-13T20:22:11.900 回答