我正在进行图像分析项目,该项目检查大量图像中设定位置的rgb值,并且需要能够知道某个区域是绿色还是蓝色。最初我以为我可以通过测试rgb中的g>b
来做到这一点,但我已经意识到,由于混合了红色,绿色图像中通常会出现比绿色更多的蓝色。我怎么知道 - 可能是公式或算法,基于rgb显然看起来是什么颜色?
答案 0 :(得分:2)
您可以使用Color类RGB
方法将HSB
值转换为RGBtoHSB
值。得到的色调值介于0-1之间,绿色(0,255,0)的色调值为0.33,蓝色(0,0,255)为0.66
float[] hsb = Color.RGBtoHSB(0, 255, 0, null);//green
System.out.println(hsb[0]);
hsb = Color.RGBtoHSB(0, 0, 255, null);//blue
System.out.println(hsb[0]);
通过此,您可以为色调值创建一个指标,然后更接近'绿色,例如任何色调值< 0.5比绿色更绿。
下面的图片描绘了这个颜色空间中的颜色如何变化,在X轴上有色调(在此图片中注意色调从0-360度变化,而RGBtoHSB
返回值0-1)< / p>