微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从“ cv :: Mat”到“ IplImage”的用户定义的转换不存在

如何解决从“ cv :: Mat”到“ IplImage”的用户定义的转换不存在

我正在使用此特征将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);

出现imageX的地方会产生标题错误

解决方法

这是唯一不会产生编译器错误的解决方案:

#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以获得更多信息。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。