Я пытаюсь повернуть изображение в 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
тип переменной, какая-либо идея о том, как сделать это?
В новом интерфейсе OpenCV 2.0 C ++ на самом деле нет необходимости переключаться между Mat
и IplImage
, но при желании вы можете использовать Оператор IplImage
:
IplImage dst_img = dst;
Обратите внимание, что создается только заголовок IplImage, а данные (пиксели) будут совместно использоваться. Для получения дополнительной информации см. интерфейс OpenCV C ++ или пример image.cpp
в каталоге OpenCV-2.0 / samples / c
.
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);