C++ 没有合适的用户定义的“转换”;cv::Mat“;至;IplImage“;存在
我正在尝试使用以下特征将电脑中的cv::Mat转换为IplImage:C++ 没有合适的用户定义的“转换”;cv::Mat“;至;IplImage“;存在,c++,image,visual-studio,opencv,visual-c++,C++,Image,Visual Studio,Opencv,Visual C++,我正在尝试使用以下特征将电脑中的cv::Mat转换为IplImage: opencv:3.4.14 OS:赢10分 代码:c++ 不同选项的示例如下: cv::Mat MBin=cv::Mat::zero(cv::Size(64,64),cv_32FC1); IplImage*image0=新的IplImage(MBin); IplImage image1=MBin; IplImage*image2=cvCloneImage(&(IplImage)MBin); IplImage*image3
- opencv:3.4.14
- OS:赢10分
- 代码:c++
cv::Mat MBin=cv::Mat::zero(cv::Size(64,64),cv_32FC1);
IplImage*image0=新的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(图像4和图像3);
出现imageX时产生标题错误。在
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)
此外,您还可以参考此项了解更多信息。这是唯一不会产生编译器错误的解决方案:
#包括
Mat Img=imread(“1.jpg”);
IplImage IBin_2=cvIplImage(MBin);
IplImage*IBin=&IBin_2;
不要使用过时的C api!它是一个有几百个类的代码,我不能改变所有的C API。@ SSR不需要,只使用C++ API。