unsigned char数组与IplImage、Mat之间互相转换

Mat input_image;
unsigned char* input = new unsigned char[input_image.rows * input_image.cols];	//这里假设是单通道的,如果不是,需要乘以input_image.channels()

//将unsigned char数组转换为IplImage*,并显示
IplImage* image = cvCreateImageHeader(cvSize(input_image.cols,input_image.rows), IPL_DEPTH_8U, input_image.channels()); 
image->origin = ~image->origin; 
cvSetData(image, input, input_image.cols * input_image.channels());  
cvNamedWindow("window-1");   
cvShowImage("window-1", image);		//这里显示出来的图像是倒着的

//将unsigned char数组转换为Mat,并显示
Mat output_image(input_image.rows, input_image.cols, input_image.type(),input);
imshow("output_image",output_image);	//这里显示出来的图像是正的

//将IplImage*转换为unsigned char数组
IplImage* image;
int image_size = image->width * image->height;
unsigned char* output = new unsigned char[image_size];	//或unsigned char* output = (unsigned char*)malloc(sizeof(unsigned char) * image_size);
memcpy(output, image->imageData, image_size);

//将Mat转换为unsigned char数组
int image_size = input_image.cols * input_image.rows;
unsigned char* output = new unsigned char[image_size];	//或unsigned char* output = (unsigned char*)malloc(sizeof(unsigned char) * image_size);
memcpy(output, input_image.data, image_size);

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值