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