不推荐使用的从cv::mat到IplImage的转换问题



我知道过去已经有这样的问题了,但所有的答案似乎都不起作用了,因为有些函数已经过时了,所以我希望你能帮助我。

这就是我尝试做的:

IplImage* image = 0;
Mat frame; 
image = cvCloneImage(&(IplImage)frame); 

基本上我得到了一个错误,因为最后一行:

E0312 no suitable user-defined conversion from "cv::Mat" to "IplImage" exists

顺便说一句,如果有一种手动的方式将Mat转换为IplImage,这对我来说也很棒。

附言:我正在尝试使用一个旧代码,所以如果Mat是OpenCV中的新标准,而不建议使用IplImage,我就不会感到困扰。

PS2:如果有一个旧版本的OpenCV可以做到这一点而没有错误,那也没关系。

谢谢!

我尝试手工制作转换。在我的环境中,它运行良好(OpenCV 2.4.9(。小心使用pix_type变量值。

Mat frame_gray = imread("img.bmp");
int pix_type = IPL_DEPTH_8U;
IplImage* img = cvCreateImage(frame_gray.size(), pix_type , frame_gray.channels());
img->imageData = reinterpret_cast<char*>(frame_gray.data);
img->widthStep = frame_gray.step;

在现代版本的OpenCV(3.9及更高版本(上,您可以使用函数cvIplImage:

Mat matImage;
IplImage iplImage = cvIplImage(matImage);

最新更新