Camera 将网络摄像头视频(无音频)流至Qt5中的小部件

Camera 将网络摄像头视频(无音频)流至Qt5中的小部件,camera,pyqt,webcam,qt5,v4l2,Camera,Pyqt,Webcam,Qt5,V4l2,从Qt5的文档中,我了解到有许多小部件和类处理相机输入。另一方面,这些文档读起来与手机摄像头,甚至是真正的摄像头有很多相似之处。带有取景器、录制和快照按钮等 我想要的只是桌面Qt5程序中的一个小部件,它可以让我看到网络摄像头的视频流(/dev/video0,v4l2)。通过代码控制的所有参数。分辨率、亮度和相机支持的任何东西。没有GUI元素 最少但有效的代码示例是值得赞赏的。C++/Qt5或pyqt5。但我应该在哪个连接中使用哪个类的提示也是一个开始 多谢各位 请注意,没有只包含(!)文档页面链

从Qt5的文档中,我了解到有许多小部件和类处理相机输入。另一方面,这些文档读起来与手机摄像头,甚至是真正的摄像头有很多相似之处。带有取景器、录制和快照按钮等

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

最少但有效的代码示例是值得赞赏的。C++/Qt5或pyqt5。但我应该在哪个连接中使用哪个类的提示也是一个开始

多谢各位

请注意,没有只包含(!)文档页面链接的答案,好像这是自我解释的。有一个相机的例子,但对我帮助不大。否则我就不必在这里问了。

像这样的文档就是您真正需要的

最简单的工作示例: (在ubuntu上使用pseye摄像头进行测试。如果这是系统中唯一的摄像头,则无需指定设备路径)

#包括“mainwindow.h”
#包括“ui_main window.h”
#包括
#包括
#包括
主窗口::主窗口(QWidget*父窗口):
QMainWindow(父级),
用户界面(新用户界面::主窗口)
{
用户界面->设置用户界面(此);
摄像机=新的QCamera(本);
videoWidget=新的QVideoWidget();
ui->mainLayout->addWidget(videoWidget);
摄像头->设置取景器(视频小部件);
摄像头->开始();
}
MainWindow::~MainWindow()
{
删除用户界面;
}

只需向主窗口添加一个formLayout,即designer,并将其命名为mainLayout。另外,将多媒体和multimediawidget添加到QT+=中,一切正常。请注意,如果您获得低质量流、低FPS或任何类似情况,这可能是由于默认设置和视频小部件从网络摄像头请求的流。Qt5相机示例包括一个下拉列表,可用于选择流编解码器和FPS等设置。如果您使用的是video4linux2,请使用
v4l2 ctl--list formats ext
查找网络摄像头的规格和可用流。
#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;
}