Последнее обновление:
August 28, 2017

Есть мысль... Жми, напиши!
Что имеем: Постов : 167 Авторов: 1 Категорий: 37

Конвертация QVideoFrame to OpenCV Mat в Qt5.6 и OpenCV3.1

Потребовалось на днях обрабатывать кадры с камеры (Использовалась QCamera) через OpenCV.

Да,  OpenCV может сам захватывать фреймы, но в случае с Qt QCamera работает лучше и есть больше параметров (например выбо р формата YUV или MJPG).

Вот так выглядит конвертация:

 QVideoFrame copy(frame);
    if (frame.isValid() && copy.map(QAbstractVideoBuffer::ReadOnly)) {
        Mat frameYUV=Mat(copy.height() + copy.height()/2, copy.width(), CV_8UC1, (void*)copy.bits() );
        
        Mat frameRGB;
        cvtColor(frameYUV, frameRGB, CV_YUV2BGRA_I420);

        imshow("Video", frameRGB);

    }

C камеры приходит QVideoFrame frame в формате YUV.

Вот и всё =)

 

 

Views :

157

Правильный способ конвертирования cv::Mat в QImage

Некогда рассказывать почему так, но это реально работает =)

QImage Camera::mat2Qimg(const Mat &src) {
    cv::Mat temp;
    cvtColor(src, temp,CV_BGR2RGB);
    QImage dest((uchar*) temp.data, temp.cols, temp.rows, temp.step, QImage::Format_RGB888);
    QImage dest2(dest);
    dest2.detach();
    return dest2;
}
Views :

1062