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;
Другие вопросы по тегам