【问题标题】:Stream webcam video (no audio) to a widget in Qt5将网络摄像头视频(无音频)流式传输到 Qt5 中的小部件
【发布时间】:2014-05-29 18:51:43
【问题描述】:

从 Qt5 的文档中,我了解到有许多小部件和类可以处理相机输入。另一方面,文档读起来很像用于手机相机甚至真实相机的内容。带有取景器、记录和快照按钮等。

我想要的只是桌面 Qt5 程序中的一个小部件,它可以让我看到我的网络摄像头的视频流(/dev/video0、v4l2)。通过代码控制的所有参数。分辨率、亮度和相机支持的任何内容。没有 GUI 元素。

欢迎使用最小但有效的代码示例。 C++/Qt5 或 pyqt5。但是提示我应该在哪个连接中使用哪些类也是一个开始。

非常感谢!

附:请不要只包含(!)指向文档页面的链接的答案,就好像那是不言自明的。有一个相机示例,但对我没有太大帮助。否则我就不用在这里问了。

【问题讨论】:

    标签: camera pyqt webcam qt5 v4l2


    【解决方案1】:

    http://qt-project.org/doc/qt-5/qtmultimediawidgets-camera-example.html 这样的文档真的是你所需要的。

    最小的工作示例: (在 ubuntu 上用 pseye 摄像头测试。如果系统中只有摄像头,则不必指定设备路径)

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    
    #include <QCamera>
    #include <QMediaPlayer>
    #include <QVideoWidget>
    
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        camera = new QCamera(this);
        videoWidget = new QVideoWidget();
        ui->mainLayout->addWidget(videoWidget);
    
        camera->setViewfinder(videoWidget);
        camera->start();
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    

    【讨论】:

    • 只需在 MainWindow 设计器中添加一个 formLayout 并将其命名为 mainLayout。还将多媒体和多媒体小部件添加到 QT += 中,一切正常。
    • 请注意,如果您获得低质量流、低 FPS 或任何类似情况,这可能是由于视频小部件从网络摄像头请求的默认设置和流。 Qt5 Camera 示例包含一个下拉列表,可让您选择流编解码器和 FPS 等设置。如果您使用的是 video4linux2,请使用 v4l2-ctl --list-formats-ext 了解网络摄像头的规格和可用流。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    相关资源
    最近更新 更多