我在cvMat对象中有一个YUYV图像缓冲区(下面显示的代码段)。我不得不将这个cvMat对象转换为IplImage进行颜色转换。
CvMat cvmat = cvMat(480, 640, CV_8UC2, yuyv_buff);
我尝试了以下选项将此cvmat
对象转换为IplImage
对象(src:https://medium.com/@zixuan.wang/mat-cvmat-iplimage-2f9603b43909)。
//cvGetImage()
CvMat M;
IplImage* img = cvCreateImageHeader(M.size(), M.depth(), M.channels());
cvGetImage(&M, img); //Deep Copy
//Or
CvMat M;
IplImage* img = cvGetImage(&M, cvCreateImageHeader(M.size(), M.depth(), M.channels()));
//cvConvert()
CvMat M;
IplImage* img = cvCreateImage(M.size(), M.depth(), M.channels());
cvConvert(&M, img); //Deep Copy
但没有任何效果。 cvGetImage()
,cvConvert()
期望cvArr*
作为输入。将&cvmat
传递给他们会引发异常。
在OpenCV 2.4中有没有其他方法可以将CvMat对象转换为IplImage对象?
注意:我不能使用C ++ API或任何其他版本的OpenCV。我仅限于使用OpenCV 2.4
编辑1:我的目标是将此YUYV缓冲区转换为RGB图像对象。
答案 0 :(得分:0)
我没有创建cvMat
,而是直接从yuyv图像缓冲区创建IplImage
,如下所示:
IplImage* frame = cvCreateImage(cvSize(640,480), IPL_DEPTH_8U, 2);
frame->imageData=(char*)yuyv_buffer;