Netlogo NXT砖的RGB颜色分组

Netlogo NXT砖的RGB颜色分组,netlogo,lejos-nxj,mindstorms,Netlogo,Lejos Nxj,Mindstorms,我正在尝试用netlogo为Nxt brick编写一个扩展。为了连接砖块,我使用了Lejos。我的颜色传感器有问题。我想写一个简单的方法,返回传感器颜色作为一个数字,如黄色:1,红色:2等,但传感器电机总是返回不同的RGB颜色在同一个表面上。例如,我把它放在一张黄色的纸上,rgb的颜色是:[236 189 104],[247 202 108]。。如果它返回相同表面颜色的唯一RGB编号,我会根据RGB颜色范围对它们进行分类,并为每种颜色提供唯一编号。你知道我怎么做吗?而且,它不会在不同的表面上运行

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

如果我正确理解你的意思,这个方法可能会对你有所帮助。Java代码如下:

float[] hsb = Color.RGBtoHSB(red, green, blue, null);  
float hue = hsb[0];
(其中
红色
绿色
蓝色
是包含传感器结果的变量)

…将为您提供介于0和1之间的
float
颜色的“色调”,如果您定义了适当的范围,这应该足以确定它是黄色、蓝色、绿色还是其他颜色。这应该是非常近似的类似于:

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

…但别相信我的话!您应该进行试验,看看传感器在黄纸上时停留在什么范围内,等等。

谢谢尼古拉斯。通过使用每个颜色的色调范围和rgb衍射,我解决了我的问题。