【OpenCV图像处理】IplImage转换灰度图像及Cvmat与IplImage格式之间的相互转换

#define ImgPath "D:\\...\\*.JPG"

//读取图像
IplImage* Img = cvLoadImage(ImgPath);
if (!Img)
{
	fprintf(stderr, "Can not load image %s\n", ImgPath);
}

//转换为灰度图像
IplImage* ImgGray = cvCreateImage(cvGetSize(Img), IPL_DEPTH_8U, 1);
cvCvtColor(Img, ImgGray, CV_BGR2GRAY);//cvCvtColor(src,des,CV_BGR2GRAY)
cvSaveImage(ImgGrayPath, ImgGray);//保存灰度图像

//转换为矩阵
CvMat* ImgMat = cvCreateMat(ImgGray->height, ImgGray->width, CV_64FC1);//定义一个指向CvMat对象的指针
ImgMat = cvCreateMatHeader(ImgGray->height, ImgGray->width, CV_64FC1);//创建矩阵头,和图像头,数据共享(必要)
cvGetMat(ImgGray, ImgMat);//从img到mat

//二次转换为图像
IplImage* ReImg = cvCreateImage(cvGetSize(ImgMat), IPL_DEPTH_8U, 1);
cvGetImage(ImgMat, ReImg);//从mat到img

//显示调试
cvNamedWindow("image", CV_WINDOW_AUTOSIZE);//创建显示目标的窗口
cvShowImage("image", ReImg);//显示灰度图像
cvWaitKey(0);

//释放内存,关闭窗口
cvReleaseMat(&ImgMat);

cvReleaseImage(&Img);
cvReleaseImage(&ImgGray);
cvReleaseImage(&ReImg);

cvDestroyAllWindows();

你可能感兴趣的:(OpenCV)