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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top