我正在尝试在NXTLOGO中编写一个扩展名为NXT BLICK。连接砖块,我正在使用lejos。我有颜色传感器的问题。我想编写一种简单的方法,它将传感器颜色返回为黄色:1,红色:2等的数字,但传感器电机始终在同一表面上返回不同的RGB颜色。例如,我将其放在黄色纸上,RGB颜色是:[236 189 104],[247 202 108] ..如果它返回相同的表面颜色的唯一RGB号码,我会根据RGB颜色范围对它们进行分类,并给予它们每种颜色的唯一编号。你有什么想法我可以做到吗?此外,它不会在不同的表面上运行。只为我的纸质(黄色,蓝色,绿色)只这样做,对我来说就足够了。谢谢。

有帮助吗?

解决方案

如果我正确地理解你的意思,方法 java.awt.color.rgbtohsb 可能对您有所帮助。Java代码如下:

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

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

...将使颜色的“色调”作为0到1之间的生成acodeTagcode,这应该足以看看它是否是一个黄色,蓝色,绿色或其他东西,如果您定义适当的范围。这应该是非常近似的东西:

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

......但不要把我的话拿它!您应该尝试看看您的传感器在黄色纸张等时的范围内。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top