2011-10-04 4 views
0

J'écris une petite application qui lit la couleur de chaque pixel dans l'image et l'écrit dans le dossier. D'abord je l'ai fait en Python, mais c'est trop lent sur les grandes images. Puis j'ai découvert la librairie FreeImage, que je pouvais utiliser, mais je n'arrive pas à comprendre comment utiliser la méthode GetPixelColor. Pourriez-vous s'il vous plaît fournir un exemple sur la façon d'obtenir la couleur, par exemple, du pixel [50:50]? Voici des informations sur GetPixelColor: http://freeimage.sourceforge.net/fnet/html/13E6BB72.htm. Merci beaucoup!FreeImage: Obtenir la couleur de pixel

+0

Si cela pouvait être fait en utilisant DevIL ou CImg, ce serait bien aussi. – ghostmansd

Répondre

4

Avec FreeImagePlus en utilisant une image 24 ou 32 bits, obtenir le pixel à coords 50, 50 ressemblerait à ceci:

fipImage input; 
RGBQUAD pixel; 

input.load("myimage.png"); 
height = in.getHeight(); 

in.getPixelColor(50, height-1-50, &pixel); 

Soyez conscient que dans FreeImage l'origine est en bas à gauche, donc les valeurs y seront probablement besoin d'être inversé en soustrayant y de la hauteur de l'image comme ci-dessus.

0

Pour obtenir une couleur de pixel à partir d'une image d'entrée: img, à partir d'un appel de fonction disons: void read_image(const char* img) suivez l'extrait de code ci-dessous.

Voici l'extrait de code pour la fonction read_image ci-dessus:

FREE_IMAGE_FORMAT fif = FreeImage_GetFIFFromFilename(img); 
FIBITMAP *bmp = FreeImage_Load(fif, img); 

unsigned width = FreeImage_GetWidth(bmp); 
unsigned height = FreeImage_GetHeight(bmp); 
int bpp = FreeImage_GetBPP(bmp); 

FIBITMAP* bitmap = FreeImage_Allocate(width, height, bpp); 
RGBQUAD color; FreeImage_GetPixelColor(bitmap, x, y, &color); 

variables color contiendra la couleur du pixel d'image. Vous pouvez extraire les valeurs RVB comme suit:

float r,g,b; 
r = color.rgbRed; 
g = color.rgbGreen; 
b = color.rgbBlue; 

Espérons que ça aide!

Questions connexes