QT显示USB摄像头视频
目录
一、说明
usb摄像头利用qt打开,能够正常显示摄像头显示的视频。
二、环境说明
2.1、VS2015+QT5.9.6,利用QT的QCamera类即可实现相机打开。
在VS2015新建项目,添加这两个类multimedia;multimediawidgets
头文件说明,包含qcamera和qcamerainfo类,然后定义两个私有成员;
ui界面布局,视频显示串口类提升(小声抗议,用的录频软件和gif制作软件都有水印)。
三、代码实现
3.1头文件
#pragma once
#include <QtWidgets/QWidget>
#include "ui_myCamera.h"
#include <QtMultimedia\qcamera.h>
#include <QtMultimedia\qcamerainfo.h>
class myCamera : public QWidget
{
Q_OBJECT
public:
myCamera(QWidget *parent = Q_NULLPTR);
private slots:
void on_pushButton_camref_clicked();
void on_pushButton_cameraOpen_clicked();
private:
Ui::myCameraClass ui;
QCamera* m_camera; //相机类
QList<QCameraInfo> cameras;//usb相机列表
};
3.2cpp文件
#include "myCamera.h"
myCamera::myCamera(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
}
void myCamera::on_pushButton_camref_clicked()
{
cameras = QCameraInfo::availableCameras();//获取摄像头信息
for (int i = 0; i < cameras.count(); i++)
{
const QCameraInfo cameraInfo = cameras.at(i);
ui.comboBox_camlist->addItem(cameraInfo.description());
}
int index_c = ui.comboBox_camlist->currentIndex();
m_camera = new QCamera(cameras.at(index_c));//创建摄像头
m_camera->setCaptureMode(QCamera::CaptureVideo);//设置捕捉模式为视频
ui.widget_usb->setAspectRatioMode(Qt::KeepAspectRatioByExpanding);
m_camera->setViewfinder(ui.widget_usb);//设置 摄像头画面的显示位
}
//打开ATP相机,关闭相机
void myCamera::on_pushButton_cameraOpen_clicked()
{
if (m_camera->state() != QCamera::ActiveState)
{
m_camera->start();//开启摄像头
ui.pushButton_cameraOpen->setText(QString::fromLocal8Bit("相机关闭"));
}
else
{
m_camera->stop();
ui.pushButton_cameraOpen->setText(QString::fromLocal8Bit("相机打开"));
}
}
四、相机及运行效果
程序运行效果:
四、总结
qt中有封装好的类,qt帮助文件查看一下类的接口函数,然后网上搜索一个函数的具体应用,实现自己的小程序是非常简单的。