Agrupamento de cores RGB para o NXT tijolo
-
12-12-2019 - |
Pergunta
Eu estou tentando escrever uma extensão em netlogo para o Nxt tijolo .Para se conectar a tijolo , eu estou usando Lejos.Eu tenho um problema com o sensor de cor.Eu quero escrever um simples método que retorna o sensor de cor como um número, como amarelo :1, vermelho :2, etc.Mas o sensor do motor sempre retorna diferentes cores RGB sobre a mesma superfície.Por exemplo, eu colocá-lo sobre um papel amarelo , as cores rgb são :[236 189 104] ,[247 202 108]..se ele estava voltando a única números RGB para a mesma superfície cores, gostaria de classificá-los de acordo com as cores do RGB gama e dar um número único para cada cor.Você tem alguma idéia de como posso fazer isso ?Também , ele não será executado em diferentes superfícies.apenas fazendo isso para o meu papel de cores( amarelo, azul, verde) vai ser suficiente para mim.Obrigado.
Solução
Se eu entendi corretamente o que você quer dizer, o método o java.awt.De cor.RGBtoHSB pode ajudá-lo.Java código como este:
float[] hsb = Color.RGBtoHSB(red, green, blue, null);
float hue = hsb[0];
(onde red
, green
e blue
são variáveis que contém o sensor de resultado)
...dou-lhe a "tonalidade" de sua cor como um float
entre 0 e 1, que deve ser suficiente para ver se é um tom de amarelo, azul, verde, ou outra coisa, se você definir intervalos apropriados.Que deve ser muito approximatively algo como:
Yellow: 0.1 < hue < 0.2
Blue: 0.5 < hue < 0.7
Green: 0.25 < hue < 0.45
...mas não tome minha palavra para ela!Você deve experimentar para ver em que faixa de seu sensor permanece quando mais de papel amarelo, etc.