Qt-捕获摄像头画面
📅 2026/7/2 13:36:14
👁️ 阅读次数
📝 编程学习
在qt中捕获摄像头画面,在ui界面上添加一个comboBox控件、label标签和一个pushButton按钮,comboBox用于显示摄像头的设备,按钮用于开启摄像头,label用于显示摄像头捕获的画面。
//需要在.pro文件中加上multimedia multimediawidgets QT += core gui multimedia multimediawidgets//mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include<QCameraInfo> #include<QCameraViewfinder> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); //获取当前系统的摄像头设备列表 const QList<QCameraInfo> cameras = QCameraInfo::availableCameras(); for(const QCameraInfo &cameraInfo:cameras){ qDebug()<<cameraInfo.deviceName().toLocal8Bit().data(); ui->comboBox->addItem(cameraInfo.deviceName().toUtf8().data()); } } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_clicked() { //创建摄像头对象(把系统中的摄像头路径给QCamera对象) camera = new QCamera(ui->comboBox->currentText().toUtf8()); //创建取景器对象,也就是用于显示摄像头画面的控件,并给对象一个父指针 QCameraViewfinder *viewfinder = new QCameraViewfinder(ui->label); //根据label大小设置取景器的大小 viewfinder->resize(ui->label->size()); //把取景器显示在ui中 viewfinder->show(); //绑定摄像头和摄像头画面控件 camera->setViewfinder(viewfinder); //打开摄像头 camera->start(); //mainwindow.H #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QCamera> #include <QCameraViewfinder> #include <QMainWindow> QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private slots: void on_pushButton_clicked(); private: Ui::MainWindow *ui; QCamera *camera; // QCameraViewfinder *viewfinder; }; #endif // MAINWINDOW_H }
编程学习
技术分享
实战经验