opencv3.0.0 如何将 CvMat ,IplImage* 转换为Mat格式

时间:2020-12-31 06:35:47

安装了OpenCV3.0.0之后,发现无法用网上盛传的方法的方法来将 IplImage* 转换为Mat格式了

而且编译的时候提示没有对应的函数.

然后查了一下源文件mat.h,果然已经没有了

Mat::Mat(const IplImage* img, bool copyData=false);
原来是官方在3.0.0版本去掉了这个函数.

百度一圈也没有解决办法(唉,尝鲜是要付出代价的啊)

不过好在在OpenCV官方论坛发现了大神的解决办法,贴出来,让大家少走弯路

 IplImage * ipl = ...;
 cv
::Mat m = cv::cvarrToMat(ipl);  // default additional arguments: don't copy data.
同样,依旧只拷贝信息头,用的同一个数据块

查了一下源代码头文件,是酱紫滴

//! converts array (CvMat or IplImage) to cv::Mat
CV_EXPORTS Mat cvarrToMat(const CvArr* arr, bool copyData=false,
bool allowND=true, int coiMode=0,
AutoBuffer<double>* buf=0);

原来新版本的这个函数同样还支持CvMat到Mat的转换,真是太方便了!