0

我在 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 图像对象。

4

1 回答 1

0

cvMat我可以IplImage直接从 yuyv 图像缓冲区创建一个,而不是创建,如下所示:

IplImage* frame = cvCreateImage(cvSize(640,480), IPL_DEPTH_8U, 2); 
frame->imageData=(char*)yuyv_buffer;
于 2018-03-20T01:53:47.130 回答