当前位置: 首页 > news >正文

Qt-摄像头捕获画面

在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 <QCameraImageCapture>
#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();//捕获图像需要初始化一个新的QCameraImageCapture对象imageCapture = new QCameraImageCapture(camera);camera->setCaptureMode(QCamera::CaptureStillImage);//绑定信号与槽函数进行保存当前帧数据connect(imageCapture,&QCameraImageCapture::imageCaptured,this,&MainWindow::ImageCaptureToShow);}void MainWindow::on_pushButton_2_clicked()
{imageCapture->capture();
}void MainWindow::ImageCaptureToShow(int id, const QImage &preview)
{qDebug()<<"buhuo";preview.save("./1.jpg");
}//mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QCamera>
#include <QCameraImageCapture>
#include <QCameraViewfinder>
#include <QMainWindow>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void on_pushButton_clicked();void on_pushButton_2_clicked();void ImageCaptureToShow(int id,const QImage &preview);private:Ui::MainWindow *ui;QCamera *camera;// QCameraViewfinder *viewfinder;QCameraImageCapture *imageCapture;
};
#endif // MAINWINDOW_H
http://www.wxhsa.cn/company.asp?id=4744

相关文章:

  • 我开发的软件和开源/免费软件
  • PostgreSQL中级认证,PG证书官网查询
  • LLaMA-Adapter - 详解
  • 查看安装软件版本的命令
  • ubuntu 20.04安装mysql 5.7
  • 企业微信逆向开发协议,ipad协议调用方式
  • OpenStack Nova Scheduler 计算节点选择机制
  • 记一种很新的 bitset
  • 基于yolo12进行深度学习的机动车车牌检测
  • 有向图强连通分量
  • Kafka 消费者元数据topicId变化问题
  • 【SPIE出版】第五届生物医学与生物信息工程国际学术会议(ICBBE 2025)
  • Qoder 全新「上下文压缩」功能正式上线,省 Credits !
  • journald 持久化 + 限额脚本
  • 【2025-09-14】连岳摘抄
  • 深入解析:PAT乙级_1125 子串与子列_Python_AC解法_含疑难点
  • ESP32-S3 与GPS北斗通信返回定位/海拔/速度数据的测试代码
  • GZY.Quartz.MUI(基于Quartz的UI可视化操作组件) 2.8.0发布 新增仪表盘和检索功能
  • AIGEO助力企业破局
  • 东南大学数据库课程06-Database Design
  • MacOS升级15.2后的问题(二):无法修改mac网络地址
  • 东南大学数据库课程07-Distributed Database Systems
  • HCIA——VLAN间通信
  • Xdebug安装与PhpStorm调试配置
  • vue - 内置指令
  • 东南大学数据库课程02-DataModel数据模型
  • Torch核心数据结构Tensor(张量)
  • vue - 进阶
  • 读书笔记:为什么你的数据库有时不用索引?一个关键参数告诉你答案
  • MacOS升级15.2后的问题(一):安装第三方下载的软件,提醒文件已损坏