Qt:显示实时视频,一次一帧

Qt: Display Live Video, One Frame At A Time

本文关键字:一次 一帧 Qt 显示 实时视频      更新时间:2023-10-16

我有一个通过分布式总线解码的视频帧。目前,我使用的是QLabel,它通过Qt Signal/Slot接收帧缓冲区并设置其像素图。

void VideoViewer::slot_update_view( unsigned char* frame, QSize size )
{
        QImage img( frame, size.width(), size.height(), QImage::Format_RGB888 );
        _label->setPixmap( QPixmap::fromImage( img ).scaledToWidth( width(), Qt::SmoothTransformation ) );
}

这是有效的,但使用QLabel感觉很麻烦。有更好的解决方案吗?最后我想在视频的上面画画。

我想说,让它不那么"黑客",更健壮的最好方法是使用一些低级的图像类,而不是指向缓冲区的原始指针。例如,您可以使用类似OpenCV中的表示法。

使用普通缓冲区可能非常危险,而且很难跟踪错误。