近期在使用opencv3.4过程中,出现一个不大不小的问题,即Mat转IplImage格式中频繁报错,显示“不存在用户定义的从 “cv::Mat” 到 “IplImage” 的适当转换”。
首先声明一点,我在使用opencv2.4.8中,使用一下代码是没有问题的,是可以转换的
IplImage imgTmp = image;
IplImage* img = cvCloneImage(&imgTmp);
但是将代码在3.4.9中进行使用就会报文章开头那样的错误。也试过很多办法,包括修改“opencv\build\include\opencv2\core”中的types_c.h关于IplImage的结构体,效果非常不理想,最后在一篇文章中找到了答案,具体代码修改如下:
IplImage imgTmp = cvIplImage(image);
IplImage* img = cvCloneImage(&imgTmp);
使用cvIplImage()函数进行转换,在opencv中的说明代码如下
#ifdef __cplusplus
typedef struct _IplImage IplImage;
CV_EXPORTS _IplImage cvIplImage(const cv::Mat& m);
#endif
这个函数应该是opencv3.0及以后版本的Mat转IplImage的函数。