如何检测图像的黄色程度

时间:2012-09-13 20:11:45

标签: java android

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

我一直在玩Bitmap.getPixel(),但我无法弄清楚如何忽略其他颜色。

enter image description here

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

我怎样才能检测到黄色?

2 个答案:

答案 0 :(得分:11)

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

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

黄色可能取决于你,但范围可能在72到49之间(您可以使用this tool来获得一个想法)然后您可以量化它在此范围内的位置或高或低亮度和饱和度都是。

答案 1 :(得分:1)

Bitmap.getPixel(int x, int y)方法返回一个Color对象,其中包含该像素的RGB值。黄色是红色和绿色的组合,所以直黄色RGB三元组将是(255,255,0),对吗?如果变暗,则降低红色和绿色值。如果你变得更亮,你会调出蓝色值。所以基本上,你需要找到一种方法来检测任何给定像素的RGB值如何“接近”(255,255,0)然后累积整个图像的那些接近度值。对第二张图像执行相同操作,然后比较2个结果。