Domanda

Sto cercando di scrivere un'estensione in Netlogo per Brick NXT.Per collegare il mattone, sto usando lejos.Ho un problema con il sensore di colore.Voglio scrivere un metodo semplice che restituisce il colore del sensore come un numero come giallo: 1, rosso: 2 ecc. Ma il motore del sensore restituisce sempre diversi colori RGB sulla stessa superficie.Ad esempio lo metto su un foglio giallo, i colori RGB sono: [236 189 104], [247 202 108] .. Se restituisse numeri RGB univoci per gli stessi colori di superficie, li classificherei in base alle gamma di colori RGB e dareun numero univoco per ogni colore.Hai idea di come posso farlo?Inoltre, non funzionerà su superfici diverse.Solo facendo questo per i miei colori di carta (giallo, blu, verde) sarà sufficiente per me.Grazie.

È stato utile?

Soluzione

Se ho capito correttamente cosa intendi, il metodo java.awt.color.rgbtohsb potrebbe aiutarti.Codice Java come questo:

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

(dove red, green e blue sono variabili contenenti il risultato del sensore)

... ti darà la "tonalità" del tuo colore come un float tra 0 e 1, che dovrebbe essere sufficiente per vedere se è un'ombra di giallo, blu, verde o qualcos'altro, se definisci le gamme appropriate.Questo dovrebbe essere molto approssimativamente qualcosa come:

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

... ma non prendi la mia parola per questo!Dovresti sperimentare per vedere in quale intervallo il tuo sensore rimane quando su carta gialla, ecc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top