在图像处理领域opencv是我们常用的,ImageMagick也是使用的图像处理软件之一,在这里面有时候常常有内部结构的相互转换,这里先贴出一个image++中的Magick::Image格式转为Opencv中的Mat格式
int magick2IplImage(Magick::Image magickImage,cv::Mat &imgMat)
{
//get width height
int WIDTH = magickImage.columns();
int HEIGHT = magickImage.rows();
//imWrite to IplImage
IplImage *cvImage = cvCreateImage( cvSize(WIDTH, HEIGHT), IPL_DEPTH_8U, 4 );
char* block = (char*)malloc(cvImage->imageSize);
magickImage.write(0,0, WIDTH, HEIGHT, "BGRA", CharPixel, block);
//OpenCV part
memcpy(cvImage->imageData, block,cvImage->imageSize );
imgMat = cv::Mat(cvImage);
//imwrite("image.jpg",imgMat);
free(block);
return 0;
}