MyTetra Share
Делитесь знаниями!
Как правильно сконвертировать cv::Mat в QImage
Время создания: 23.11.2017 20:05
Автор: Xintrea
Текстовые метки: opencv, Mat, Qt, QImage, картинка, изображение, цветное, черно-белое
Раздел: Компьютер - Программирование - Компьютерное зрение
Запись: xintrea/mytetra_syncro/master/base/1511456735n2lgd8bdgz/text.html на raw.github.com

Перекодирование цветной трехканальной матрицы OpenCV в QImage происходит так:


cv::Mat currentFrame;

...

// Создание QImage картинки

QImage img((uchar*)currentFrame.data,

currentFrame.cols,

currentFrame.rows,

currentFrame.step,

QImage::Format_RGB888);


// Преобразование цветов из BGR (OpenCV) в RGB (Qt)

img=img.rgbSwapped();


Возможно, это не самый быстрый способ, но результат соответствует исходной картинке.


Перекодирование черно-белой одноканальной матрицы OpenVC в QImage происходит так:


cv::Mat currentFrame;

...

// Из цветной картинки получаем черно-белую средствами OpenCV

cv::cvtColor(currentFrame, currentBwFrame, CV_BGR2GRAY);


// Создание черно-белой QImage картинки из ч/б vc::Mat

QImage img((uchar*)currentBwFrame.data,

currentBwFrame.cols,

currentBwFrame.rows,

currentBwFrame.step,

QImage::Format_Grayscale8);


По результатам тестов, перевод картинки 640x480 из одного формата в другой и вывод ее на экран в Qt-приложении происходит менее чем за 0.025 сек на неразогнаном IntelCore i7 KabyLake. Как по мне, так это достаточно медленно.


 
MyTetra Share v.0.59
Яндекс индекс цитирования