2012-04-03 112 views
1

我有一個來自ImageMagick的RGB值數組,我想在opencv中創建一個IplImage結構。我想知道如何將IplImage的內容設置爲rgb數組值,而無需將ImageMagick圖像寫入硬盤,然後重新讀取它。來自RGB陣列的OpenCv圖像

回答

1

所以你想要將ImageMagick Image對象轉換爲IplImage。只需將它寫入緩衝區,然後從該緩衝區中創建一個IplImage即可。從這裏(http://www.imagemagick.org/discourse-server/viewtopic.php?f=23 &噸= 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; 
}  

此致 丹尼爾

0
  • 您可以通過這種方式也做了,

    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);