Pregunta

Estoy intentando escribir una extensión en netlogo para Nxt brick.Para conectar el ladrillo, estoy usando Lejos.Tengo un problema con el sensor de color.Quiero escribir un método simple que devuelva el color del sensor como un número como el amarillo:1, rojo: 2, etc.Pero el motor del sensor siempre devuelve diferentes colores RGB en la misma superficie.Por ejemplo, lo puse sobre un papel amarillo, los colores rgb son:[236 189 104] ,[247 202 108]..Si devolviera números RGB únicos para los mismos colores de superficie, los clasificaría según el rango de colores RGB y daría un número único para cada color.¿Tienes alguna idea de cómo puedo hacerlo?Además, no funcionará en diferentes superficies.Sólo hacer esto para los colores de mi papel (amarillo, azul, verde) será suficiente para mí.Gracias.

¿Fue útil?

Solución

Si entendí correctamente lo que quieres decir, el método. java.awt.Color.RGBtoHSB podría ayudarte.Código Java como este:

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

(dónde red, green y blue son variables que contienen el resultado del sensor)

...te dará el "tono" de tu color como float entre 0 y 1, lo que debería ser suficiente para ver si es un tono de amarillo, azul, verde o cualquier otra cosa, si define los rangos apropiados.eso debería ser muy aproximadamente algo como:

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

... ¡pero no confíes en mi palabra!Deberías experimentar para ver en qué rango permanece tu sensor cuando está sobre papel amarillo, etc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top