我正在尝试在netlogo中为Nxt brick编写扩展名。为了连接砖,我正在使用Lejos。我的颜色传感器有问题。我想写一个简单的方法,将传感器颜色作为一个数字返回,如黄色:1,红色:2等。但传感器电机总是在同一表面上返回不同的RGB颜色。例如我把它放在黄纸上,rgb颜色是:[236 189 104],[247 202 108] ..如果它返回相同表面颜色的唯一RGB数字,我会根据RGB颜色范围对它们进行分类并给出每种颜色的唯一编号。你知道我怎么做吗?此外,它不会在不同的表面上运行。只为我的纸张颜色(黄色,蓝色,绿色)这样做对我来说已经足够了。感谢。
答案 0 :(得分:0)
如果我理解你的意思,方法java.awt.Color.RGBtoHSB可能对你有帮助。像这样的Java代码:
float[] hsb = Color.RGBtoHSB(red, green, blue, null);
float hue = hsb[0];
(其中red
,green
和blue
是包含传感器结果的变量)
...会给你颜色的“色调”为0到1之间的float
,这应该足以看出它是否是黄色,蓝色,绿色或其他颜色的阴影,如果你定义适当的范围。这应该是非常近似类似于:
Yellow: 0.1 < hue < 0.2
Blue: 0.5 < hue < 0.7
Green: 0.25 < hue < 0.45
......但不要相信我的话!您应该尝试查看传感器在黄纸等时的停留范围