为NXT砖分组RGB颜色

时间:2012-05-22 09:48:30

标签: netlogo lejos-nxj mindstorms

我正在尝试在netlogo中为Nxt brick编写扩展名。为了连接砖,我正在使用Lejos。我的颜色传感器有问题。我想写一个简单的方法,将传感器颜色作为一个数字返回,如黄色:1,红色:2等。但传感器电机总是在同一表面上返回不同的RGB颜色。例如我把它放在黄纸上,rgb颜色是:[236 189 104],[247 202 108] ..如果它返回相同表面颜色的唯一RGB数字,我会根据RGB颜色范围对它们进行分类并给出每种颜色的唯一编号。你知道我怎么做吗?此外,它不会在不同的表面上运行。只为我的纸张颜色(黄色,蓝色,绿色)这样做对我来说已经足够了。感谢。

1 个答案:

答案 0 :(得分:0)

如果我理解你的意思,方法java.awt.Color.RGBtoHSB可能对你有帮助。像这样的Java代码:

float[] hsb = Color.RGBtoHSB(red, green, blue, null);  
float hue = hsb[0];

(其中redgreenblue是包含传感器结果的变量)

...会给你颜色的“色调”为0到1之间的float,这应该足以看出它是否是黄色,蓝色,绿色或其他颜色的阴影,如果你定义适当的范围。这应该是非常近似类似于:

Yellow: 0.1  < hue < 0.2
Blue:   0.5  < hue < 0.7
Green:  0.25 < hue < 0.45

......但不要相信我的话!您应该尝试查看传感器在黄纸等时的停留范围