OpenCV 2.4: C API для преобразования cvMat в IplImage
У меня есть буфер изображений YUYV в объекте cvMat (фрагмент показан ниже). Мне пришлось конвертировать этот объект cvMat в IplImage для преобразования цвета.
CvMat cvmat = cvMat(480, 640, CV_8UC2, yuyv_buff);
Я попробовал следующие варианты, чтобы преобразовать это cvmat
Возражать IplImage
объект (источник: 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
к ним бросает исключение.
Есть ли другой способ преобразовать объект CvMat в объект IplImage в OpenCV 2.4?
Примечание: я не могу использовать C++ API или любую другую версию OpenCV. Я ограничен в использовании только OpenCV 2.4
Редактировать 1: Моя цель - преобразовать этот буфер YUYV в объект изображения RGB.
1 ответ
Вместо создания cvMat
Я смог создать IplImage
прямо из буфера изображений yuyv, как показано ниже:
IplImage* frame = cvCreateImage(cvSize(640,480), IPL_DEPTH_8U, 2);
frame->imageData=(char*)yuyv_buffer;