java – 如何从RGB值中分辨出可见颜色

我正在进行一个图像分析项目,该项目检查大量图像中设定位置的rgb值,并且需要能够知道某个区域是绿色还是蓝色.最初我认为我可以通过测试rgb中的g> b来做到这一点,但我已经意识到,由于混合了红色,绿色图像中通常会出现比绿色更多的蓝色.我怎么知道 – 可能是公式或算法,基于rgb的颜色看起来是什么颜色? 最佳答案 您可以使用
Color类RGBtoHSB方法将RGB值转换为HSB值.得到的色调值介于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)

点赞