代码如下:
/*==========================================================
* 文件名 : Util
* 日期 : 2015/9/7
* 功能 : 实现一些工具函数,如Mat和IplImage的相互转换等
* ==========================================================*/
#include "cv.h"
using namespace cv;
#ifndef _UTIL_H_
#define _UTIL_H_
class Util {
public:
// Mat转化为IplImage
static IplImage matToIplImage(Mat* mat);
// IplImage转化为Mat
static Mat iplImageToMat(IplImage* img);
};
IplImage Util::matToIplImage(Mat* mat){
return IplImage(*mat);
}
Mat Util::iplImageToMat(IplImage* img) {
return Mat(img, true);
}
#endif
示例:
#include "Util.h"
#include "highgui.h"
void main() {
IplImage* img = cvLoadImage("person1/p4.jpg");
Util util;
// IplImage转化为Mat
Mat mat = util.iplImageToMat(img);
// 再将Mat转化为IplImage
IplImage img2 = util.matToIplImage(&mat);
char* w1 = "原IplImage";
char* w2 = "转化而来的Mat";
char* w3 = "再转化而来的IplImage";
// 显示IplImage
cvNamedWindow(w1);
cvShowImage(w1, img);
// 显示Mat
namedWindow(w2);
imshow(w2, mat);
// 显示再转化来的IplImage
cvNamedWindow(w3);
cvShowImage(w3, &img2);
cvWaitKey();
cvDestroyWindow(w1);
destroyWindow(w2);
cvDestroyWindow(w3);
}
结果图: