2012-04-03 10 views
1

Ich habe ein Array von RGB-Werten von ImageMagick und ich möchte eine IplImage-Struktur in opencv erstellen. Ich frage mich, wie kann ich den Inhalt der IplImage als rgb-Array-Werte festlegen, ohne das ImageMagick-Bild auf die Festplatte zu schreiben und dann erneut zu lesen.OpenCv Bild von RGB-Array

Antwort

1

Sie also ein ImageMagick Image-Objekt in ein IplImage konvertieren möchten. Es ist nur eine Frage des Schreibens in einen Puffer und dann Erstellen eines IplImage aus diesem Puffer. Der Code von hier (http://www.imagemagick.org/discourse-server/viewtopic.php?f=23 & t = 18183):

void Magick2Ipl(Image magicImage, IplImage* cvImage) 
{ 
    int width= magicImage.size().width(); 
    int height = magicImage.size().height(); 

    byte* blob= new byte[cvImage->imageSize]; 
    magicImage.write(0,0, width, height, "BGRA", MagickCore::CharPixel, blob); 
    memcpy(cvImage->imageData, blob, cvImage->imageSize); 
    delete [] blob; 
}  

Mit freundlichen Grüßen, Daniel

0
  • Sie können es auf diese Weise auch tun,

    Image image("Image_Path"); 
    
    int width = image.size().width(); 
    int height = image.size().height(); 
    
    IplImage* mat = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3); 
    image.write(0, 0, width, height, "BGR", Magick::CharPixel, (char*)mat->imageData); 
    
    cvShowImage("image", mat);