2012-05-22 52 views
0

我想在netlogo中爲Nxt磚寫一個擴展。連接磚,我使用Lejos。我有一個顏色傳感器的問題。我想寫一個簡單的方法,它返回傳感器的顏色,如黃色:1,紅色:2等。但傳感器電機總是在同一表面上返回不同的RGB顏色。例如,我把它放在一張黃色的紙上,rgb的顏色是:[236 189 104],[247 202 108] ..如果它爲相同的表面顏色返回唯一的RGB數字,我會根據RGB顏色範圍對它們進行分類並給出每種顏色的唯一編號。你有什麼想法我可以做到嗎?而且,它不會在不同的表面上運行。只爲我的紙張顏色(黃色,藍色,綠色)做這個就足夠了。謝謝。爲NXT磚分組RGB顏色

回答

0

如果我正確理解你的意思,方法java.awt.Color.RGBtoHSB可能會幫助你。 Java代碼是這樣的:

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

(其中red,​​和blue是包含傳感器結果變量)

...會給你你的顏色的「色相」爲float 0和1之間,如果你定義了合適的範圍,它應該足以查看它是否是黃色,藍色,綠色或其他東西的陰影。這應該是非常近似一樣的東西:

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

...但不要把我的話!你應該試驗一下,看看你的傳感器在黃色紙張上時在什麼範圍內。

+0

謝謝尼古拉斯。通過使用每種顏色的色調範圍和rgb差異,我解決了我的問題。 – Ecrin