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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top