Как преобразовать тип переменной Mat в типе переменной IplImage в OpenCV 2.0?

Я пытаюсь повернуть изображение в OpenCV.

Я использовал этот код, который я нашел здесь на Переполнении стека:

Mat source(img);
Point2f src_center(source.cols/2.0, source.rows/2.0);
Mat rot_mat = getRotationMatrix2D(src_center, 40.0, 1.0);
Mat dst;
warpAffine(source, dst, rot_mat, source.size());

После того как у меня есть мой dst Mat тип переменной заполнился, я хотел бы отложить его к IplImage тип переменной, какая-либо идея о том, как сделать это?

12
задан Mogsdad 13 April 2016 в 16:05
поделиться

2 ответа

В новом интерфейсе OpenCV 2.0 C ++ на самом деле нет необходимости переключаться между Mat и IplImage , но при желании вы можете использовать Оператор IplImage :

IplImage dst_img = dst;

Обратите внимание, что создается только заголовок IplImage, а данные (пиксели) будут совместно использоваться. Для получения дополнительной информации см. интерфейс OpenCV C ++ или пример image.cpp в каталоге OpenCV-2.0 / samples / c .

17
ответ дан 2 December 2019 в 04:33
поделиться

Norman в своем блоге описывает следующее (Хотя это не 2.0, это должно быть применимо к вашей проблеме.):

Для преобразования из CvMat в IplImage, используйте функцию:

IplImage* cvGetImage( const CvArr* arr, IplImage* image_header );  

Функция cvGetImage возвращает заголовок изображения для входного массива, который может быть матрицей - CvMat*, или изображением - IplImage*. В случае с изображением функция просто возвращает указатель на вход. В случае CvMat* она инициализирует структуру image_header параметрами входной матрицы. Использование:

IplImage stub, *dst_img;
dst_img = cvGetImage(src_mat, &stub);
1
ответ дан 2 December 2019 в 04:33
поделиться