2011-10-06 24 views
7

Ya he hecho esta pregunta, pero eso era sobre FreeImage. Ahora estoy tratando de hacer lo mismo con ImageMagick (para ser más correcto, con Magick ++). Todo lo que necesito es obtener el valor RGB de píxel en la imagen con la capacidad de imprimirlo en la pantalla. Lo pregunté en el foro de ImageMagick, pero parece que no hay nadie allí. :-(¿Alguien puede ayudar, por favor?obteniendo color de píxel con Magick ++

Respuesta

11

Versión 6 API

Dada una "imagen " objeto, tiene que solicitar una "caché de píxeles", a continuación, trabajar con ella. La documentación está here y here:

// load an image 
Magick::Image image("test.jpg"); 
int w = image.columns(); 
int h = image.rows(); 

// get a "pixel cache" for the entire image 
Magick::PixelPacket *pixels = image.getPixels(0, 0, w, h); 

// now you can access single pixels like a vector 
int row = 0; 
int column = 0; 
Magick::Color color = pixels[w * row + column]; 

// if you make changes, don't forget to save them to the underlying image 
pixels[0] = Magick::Color(255, 0, 0); 
image.syncPixels(); 

// ...and maybe write the image to file. 
image.write("test_modified.jpg"); 

Versión 7 API

acceso a los píxeles ha cambiado en la versión 7 (véase: porting), pero el acceso de bajo nivel todavía está presente:

MagickCore::Quantum *pixels = image.getPixels(0, 0, w, h); 

int row = 0; 
int column = 0; 
unsigned offset = image.channels() * (w * row + column); 
pixels[offset + 0] = 255; // red 
pixels[offset + 1] = 0; // green 
pixels[offset + 2] = 0; // blue 
Cuestiones relacionadas