Regroupement des couleurs RVB pour la brique NXT
-
12-12-2019 - |
Question
J'essaie d'écrire une extension dans netlogo pour Nxt brick.Pour connecter la brique, j'utilise Lejos.J'ai un problème avec le capteur de couleur.Je veux écrire une méthode simple qui renvoie la couleur du capteur sous forme de nombre tel que le jaune :1, rouge :2 etc.Mais le moteur du capteur renvoie toujours différentes couleurs RVB sur la même surface.Par exemple je le mets sur un papier jaune, les couleurs RVB sont :[236 189 104] ,[247 202 108]..s'il renvoyait des numéros RVB uniques pour les mêmes couleurs de surface, je les classerais en fonction de la gamme de couleurs RVB et donnerais un numéro unique pour chaque couleur.Avez-vous une idée de comment je peux le faire ?De plus, il ne fonctionnera pas sur différentes surfaces.faire cela seulement pour mes couleurs de papier (jaune, bleu, vert) me suffira.Merci.
La solution
Si j'ai bien compris ce que tu veux dire, la méthode java.awt.Color.RGBtoHSB pourrait vous aider.Code Java comme ceci :
float[] hsb = Color.RGBtoHSB(red, green, blue, null);
float hue = hsb[0];
(où red
, green
et blue
sont des variables contenant le résultat du capteur)
...vous donnera la "teinte" de votre couleur sous forme de float
entre 0 et 1, ce qui devrait suffire pour voir s'il s'agit d'une nuance de jaune, de bleu, de vert ou autre chose, si vous définissez des plages appropriées.Ça devrait être très approximativement quelque chose comme :
Yellow: 0.1 < hue < 0.2
Blue: 0.5 < hue < 0.7
Green: 0.25 < hue < 0.45
... mais ne me croyez pas sur parole !Vous devriez expérimenter pour voir dans quelle plage reste votre capteur lorsqu'il est sur du papier jaune, etc.