![](/img/trans.png)
[英]No suitable user-defined conversion from "cv::Scalar" to "CvScalar" exists
[英]No suitable user-defined conversion from "cv::Mat" to "IplImage" exists
我正在尝试使用以下特征将 cv::Mat 转换为 pc 中的 IplImage:
不同选项的示例:
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)
此外,您可以参考此链接以获取更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.