繁体   English   中英

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

[英]No suitable user-defined conversion from "cv::Mat" to "IplImage" exists

我正在尝试使用以下特征将 cv::Mat 转换为 pc 中的 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.xMat(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)

此外,您可以参考此链接以获取更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM