找回密码
 立即注册
首页 业界区 业界 Qt-捕获摄像头画面

Qt-捕获摄像头画面

郁梓馨 2025-9-26 11:31:28
在qt中捕获摄像头画面,在ui界面上添加一个comboBox控件、label标签和一个pushButton按钮,comboBox用于显示摄像头的设备,按钮用于开启摄像头,label用于显示摄像头捕获的画面。
  1. //需要在.pro文件中加上multimedia multimediawidgets
  2. QT       += core gui multimedia multimediawidgets
复制代码
  1. //mainwindow.cpp
  2. #include "mainwindow.h"
  3. #include "ui_mainwindow.h"
  4. #include<QCameraInfo>
  5. #include<QCameraViewfinder>
  6. MainWindow::MainWindow(QWidget *parent)
  7.     : QMainWindow(parent)
  8.     , ui(new Ui::MainWindow)
  9. {
  10.     ui->setupUi(this);
  11.     //获取当前系统的摄像头设备列表
  12.     const QList<QCameraInfo> cameras = QCameraInfo::availableCameras();
  13.     for(const QCameraInfo &cameraInfo:cameras){
  14.         qDebug()<<cameraInfo.deviceName().toLocal8Bit().data();
  15.         ui->comboBox->addItem(cameraInfo.deviceName().toUtf8().data());
  16.     }
  17. }
  18. MainWindow::~MainWindow()
  19. {
  20.     delete ui;
  21. }
  22. void MainWindow::on_pushButton_clicked()
  23. {
  24.     //创建摄像头对象(把系统中的摄像头路径给QCamera对象)
  25.     camera = new QCamera(ui->comboBox->currentText().toUtf8());
  26.     //创建取景器对象,也就是用于显示摄像头画面的控件,并给对象一个父指针
  27.     QCameraViewfinder *viewfinder = new QCameraViewfinder(ui->label);
  28.     //根据label大小设置取景器的大小
  29.     viewfinder->resize(ui->label->size());
  30.     //把取景器显示在ui中
  31.     viewfinder->show();
  32.     //绑定摄像头和摄像头画面控件
  33.     camera->setViewfinder(viewfinder);
  34.     //打开摄像头
  35.     camera->start();
  36.        
  37. //mainwindow.H
  38. #ifndef MAINWINDOW_H
  39. #define MAINWINDOW_H
  40. #include <QCamera>
  41. #include <QCameraViewfinder>
  42. #include <QMainWindow>
  43. QT_BEGIN_NAMESPACE
  44. namespace Ui { class MainWindow; }
  45. QT_END_NAMESPACE
  46. class MainWindow : public QMainWindow
  47. {
  48.     Q_OBJECT
  49. public:
  50.     MainWindow(QWidget *parent = nullptr);
  51.     ~MainWindow();
  52. private slots:
  53.     void on_pushButton_clicked();
  54. private:
  55.     Ui::MainWindow *ui;
  56.     QCamera *camera;
  57.    // QCameraViewfinder *viewfinder;
  58. };
  59. #endif // MAINWINDOW_H
  60. }
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册