我知道过去已经有这样的问题了,但所有的答案似乎都不起作用了,因为有些函数已经过时了,所以我希望你能帮助我。
这就是我尝试做的:
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);