问题描述
我正在使用此特征将PC中的cv :: Mat转换为IplImage:
- opencv:3.4.14
- 操作系统:Win 10
- 代码:c ++
差异选项的示例:
cv::Mat MBin = cv::Mat::zeros(cv::Size(64,64),CV_32FC1);
IplImage* image0= new IplImage(MBin);
IplImage image1 = MBin;
IplImage* image2 = cvCloneImage(&(IplImage)MBin);
IplImage* image3;
image3 = cvCreateImage(cvSize(MBin.cols,MBin.rows),8,3);
IplImage image4 = MBin;
cvcopy(&image4,image3);
解决方法
这是唯一不会产生编译器错误的解决方案:
#include <opencv2/core/types_c.h>
Mat Img = imread("1.jpg");
IplImage IBin_2 = cvIplImage(MBin);
IplImage* IBin = &IBin_2;
,
在opencv3.x
之前,Mat
具有构造函数Mat(const IplImage* img,bool copyData=false);
。但是在opencv3.x
中,Mat(const IplImage* img,bool copyData=false);
构造函数被取消了。
因此,您可以参考以下示例将Mat
转换为IplImage
。
//Mat—>IplImage
//EXAMPLE:
//shallow copy:
Mat Img=imread("1.jpg");
IplImage* pBinary = &IplImage(Img);
//For a deep copy,just add another copy of the data:
IplImage *input = cvCloneImage(pBinary)
此外,您可以参考此link以获得更多信息。