Конвертация QVideoFrame to OpenCV Mat в Qt 5.6 и OpenCV 3.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.

Вот и всё =)

 

 

Related posts

Упрощение работы с динамическими структурами в C++

OpenCV — Rotate Text

Вывести время компиляции исходников __TIMESTAMP__ в виде Unix timestamp в C(C++)