【问题标题】:Display uyvy data in Qt在 Qt 中显示 uyvy 数据
【发布时间】:2014-09-10 13:19:02
【问题描述】:

我的输入源为 DVD 播放器,视频格式为 UYVY。我想开发一个 Qt 应用程序,它将 UYVY 数据作为输入并显示视频帧。我在 Qt 中使用 v4l2 Linux 命令进行捕获,使用 Qt 小部件显示视频帧。我猜 Qt QImage 类不接受 UYVY 格式,它只接受 RGB 。那么我如何将我的数据转换为 RGB?有没有其他方法??谢谢..

【问题讨论】:

    标签: qt rgb v4l2


    【解决方案1】:

    我刚刚找到了支持 UYVY http://doc.qt.io/qt-5/qvideoframe.html 的 QVideoFrame,也许有一些方法可以使用 QVideoFrame::imageFormatFromPixelFormat 将其转换为 QImage

    QVideoFrame cloneFrame(frame);  
    cloneFrame.map(QAbstractVideoBuffer::ReadOnly);   
    const QImage img(cloneFrame.bits(),   
                     cloneFrame.width(),   
                     cloneFrame.height(),  
                     QVideoFrame::imageFormatFromPixelFormat(cloneFrame .pixelFormat()));
    ...
    

    【讨论】:

    • 实际上我实现了 yuv 到 rgb 转换矩阵到我收到的缓冲区,但我的功能很慢,我无法获得所需的 25fps 吞吐量。也许我应该试试 QVideoFrame。
    • 就我而言,我使用的是 gstreamer,它为 GstBuffer 提供 UYVY 内容。我将 gstreamer caps 更改为 format=BGRA 并添加了一个 videoconvert 元素并将图像格式设置为 Format_RGB32 ,它就可以工作了。我不知道你是否使用 gstreamer for v4l2
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2013-01-29
    • 2019-07-20
    • 2020-11-08
    相关资源
    最近更新 更多