FeeBled ha scritto:
Vi sto solo chiedendo come si fa a contare i pixel di un determinato colore in un immagine
1 La quantità dei pixel in un immagine è ottenuta dall'area dell'immagine (lato per lato)
2 Le dimensioni dei lati dell'immagine le ottieni interrogando il valore della larghezza e dell'altezza. ( .Width e .Height e non Weigth come ti è stato risposto prima nel pesudocodice)
3 Per contare quanti colori ci sono e quanti pixel sono occupati da questi colori, devi crearti delle variabili che contano ogni nuovo valore del codice del colore che hai identificato ed assegnato ad una variabile con l'interrogazione di che colore è a queste coordinate, e conservare il risultato (esadecimale o RGB anche come stringa o "vettore" int di 3 valori) in una matrice (array) o un una struttura (struct) con almeno una variabile array e delle variabili di posizione e incrementare di 1 il valore per ogni pixel trovato con quel codice colore in tutte le coordinate.
4 Per confrontare le 2 immagini confronti i dati ottenuti.
Esempio:
Prima immagine 5 x 5 pixel (R = Rosso G=Verde B=Blu W=Bianco N=Nero)
WWWWW
WGBRW
GGGGG
WRGBW
WNNNW
Seconda immagine
WWWWW
NNNNN
WWWWW
RRRRR
WWWWW
la larghezza la ottieni con Width che è uguale a 5 pixel, e l'altezza con Height che è 5 pixel.
Nel ciclo di interrogazione che utilizzi con i 2 FOR di scorrimento, delle posizioni PosX, PosY, usa una variabile ColoreDiQuestoPixel in cui assegni il codice colore interrogato e controlli l'array dei nuovi colori che hai trovato, se (If) il colore è nuovo allora aggiungi all'array dei colori intercettati il nuovo codice colore e incrementi di 1 la variabile della quantità di pixel di colore, altrimenti (else) se il colore è già stato intercettato in precedenza allora incrementi di 1 la variabile delle quantità del pixel di quel colore di cui hai già conservato il codice colore nell'array o nella lista dell'insieme dei colori di quell'immagine.
Quindi avrai un ArrayCodiciColoriImmagine_N1(), un ArrayCodiciColoriImmagine_N2()
ArrayCodiciColoriImmagine_N1(0) = "#FFFFFF" 'Bianco in codice esadecimale che corrisponde al valore RGB(255,255,255) nota che FF vale 255
ArrayCodiciColoriImmagine_N1(1) = "#00FF00" 'Verde in codice esadecimale che corrisponde al valore RGB(0,255,0) nota che FF vale 255
ArrayCodiciColoriImmagine_N1(2) = "#0000FF" 'Blu ecc...
ArrayCodiciColoriImmagine_N1(3) = "#FF0000" 'Rosso ecc..
ArrayCodiciColoriImmagine_N1(4) = "#000000" ' Nero ecc..
ArrayCodiciColoriImmagine_N2() diventa
ArrayCodiciColoriImmagine_N2(0) = "#FFFFFF" 'Bianco in codice esadecimale che corrisponde al valore RGB(255,255,255) nota che FF vale 255
ArrayCodiciColoriImmagine_N2(1) = "#000000" ' Nero ecc..
ArrayCodiciColoriImmagine_N2(2) = "#FF0000" 'Rosso ecc..
Per sapere quanti pixel Rossi ci sono nell'immagine 1 devi per esempio aggiornare l'array del conteggio di ogni colore
QCOloriCodiceColore_1(0) = 11 ' Quantità pixel bianco nell'immagine 1
QColoriCodiceColore_1(1) = 7 'Quantità pixel verde
QColoriCodiceColore_1(2) = 2 ' Quantità pixel blu
QColoriCodiceColore_1(3) = 3 ' Rosso
QColoriCodiceColore_1(4) = 2 'Nero
Per esempio trovi un pixel nero incrementi la variabile delle quantità dei pixel neri così quando trovi il pixel nero:
QColoriCodiceColore_1(4) = QColoriCodiceColore_1(4) + 1
Devi chiarirti il concetto di coordinate di posizione del pixel, PosX e PosY che possono essere valori compresi tra il valore minimo e il valore max dell'immagine cioè Width e Heigth. In quella coordinata PosX e PosY puoi interrogare e ottenere i colori.
L'immagine 2 se ha largezza differente lo capisci dal fatto se Larghezza1 - Larghezza2 è diverso da 0, stesso discorso per l'altezza.