簡體   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