PDA

Visualizza la versione completa : Problema con valore colore con libreria freeimage


soniettabrasile
11-01-2009, 16:56
Ciao a tutti!
Ho un problema nell'implementazione di un algoritmo in C. sto utilizzando la libreria freeimage, e non riesco a far funzionare questo piccolo pezzo di codice:

if(FreeImage_GetPixelColor(bitmap, r, c, &colore)){
immagine[r][c].R = colore.rgbRed;
immagine[r][c].G = colore.rgbGreen;
immagine[r][c].B = colore.rgbBlue;
immagine[r][c].tipo = 0;
}

ed ho inoltre dichiarato la seguente struttura in questo modo:
typedef struct pix {
int R;
int G;
int B;
int Dp[3]; // VALORE COLORE, ARRAY PER MANTENERE INFORMAZIONE PER CIASCUN R,G,B
int Cp; // VALORE FIDUCIA
int tipo; //INDICA SE IL PIXEL SI TROVA SUL BORDO =1, SULL'ELEMENTO DA ELIMINARE =2 O SULLA PARTE RESTANTE DELL'IMMAGINE=0
int Pp; //VALORE PRIORITA'

} pixel;

pixel *immagine;

Ma ho notato che i valori inseriti in immagine[r][c].R non corrispondono a quelli veri, ossia a quelli che ho osservato, aprendo l'immagine con Gimp. Forse non ho semplicemente capito il concetto base su come vengono salvati questi dati. Qualcuno sa aiutarmi??

oregon
11-01-2009, 17:24
Ritengo che al puntatore

immagine

sia stato assegnato un valore tramite una funzione di allocazione dello spazio necessario ...

soniettabrasile
11-01-2009, 17:26
sė certo,ho allocato la matrice dinamica cosė:

immagine = (pixel **)malloc((altezza)*sizeof(pixel *));
for(r = 0 ; r < altezza ; r++) {
immagine[r] = (pixel *)malloc((larghezza)*sizeof(pixel));
for(c = 0 ; c < larghezza ; c++) {

oregon
11-01-2009, 17:28
Ma deve essere

pixel **immagine;

e non

pixel *immagine;

soniettabrasile
11-01-2009, 17:30
ah, scusa per quello, mi sono sbagliata prima nel trascrivere, certo che č dichiarata pixel **immagine. Il mio problema riguarda il valore che prendo attraverso la funzione GetPixelColor...perchč ad esempio, preso un pixel rosso della mia immagine, i valori che mi ritrovo sono:

immagine[r][c].R=126
immagine[r][c].G=44
immagine[r][c].B=80

oregon
11-01-2009, 17:59
Prova ad invertire r e c nella chiamata alla funzione ...

soniettabrasile
12-01-2009, 14:09
non c'entrano niente le coordinate del pixel, il punto č che non riesco a capire come sono gestiti i colori con freeimage.

Loading