安装了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的转换,真是太方便了!