0

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

4

1 回答 1

0

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

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

(其中red和是包含传感器结果的变量greenblue

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

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

...但不要相信我的话!您应该尝试查看在黄纸等上方时传感器保持在什么范围内。

于 2012-05-23T22:01:43.803 回答