当前位置: 首页 > 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_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: 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.jsqmd.com/news/1105996/

相关文章:

  • 直流电机静音控制方案:从PWM优化到PCB布局
  • 大规模服务 ROI 评估:别让概念替代成本账本
  • 【2026年华为暑期实习(AI)-7月1日-第一题- 选择题】(题目+思路+JavaC++Python解析+在线测试)
  • 【项目实战】基于OpenCV和BDD100K数据集的辅助驾驶车道线检测与碰撞预警系统
  • 卡梅德生物科普:CD48(SLAMF2)的免疫调控机制与研究工具选择
  • SQL 复杂查询优化:先减少扫描,再谈语法漂亮
  • Better BibTeX 终极指南:告别LaTeX文献管理的混乱时代
  • 6. 深入 Nginx 核心:HTTP 11 个处理阶段与模块开发实战
  • 轻量级AI模型实战:低配设备部署与优化指南
  • 【2026年华为暑期实习(AI)-7月1日-第三题- Certainty Forcing 训练损失计算】(题目+思路+JavaC++Python解析+在线测试)
  • 基于ICM-42605和GD32VF103的6DOF运动追踪系统设计
  • adb截图-------在小程序中实现纯 JS 驱动的 ADB 客户端
  • 输入输出流重载说明:std::ostream operator<<(std::ostream os, const Vector v)
  • AI 辅助:前端工程化效率:快不是少检查,而是少返工
  • Python在AI开发中的核心优势与实战技巧
  • 变分量子本征求解器(VQE)原理与NISQ设备应用
  • 深度学习Pipeline与Baseline构建指南
  • 【6.20】射频\+FPGA\+Verilog\+仪器自动化 完整知识链路复盘
  • 智能体时代,软件工程的本质
  • 现在系统运行基本上正常,较少遇到问题了
  • 采齿背后的能量闭包原理
  • 截屏、OCR、翻译、录屏全打包?这款开源软件,一个快捷键搞定所有!
  • OpenHarmony 英语学习 App 实战:从 0 到 1 搭建中小学生英语学习应用
  • 工程化赋能传统业务工作流:先找重复劳动,不要先找服务
  • 大模型评测与AI产品质量保障:第7篇 机器学习的三种学习范式
  • SQL实战:测试必会的增删改查,从入门到熟练
  • SpringBoot 自动配置原理
  • 记忆排列题目分析
  • 第93题 IGBT模块陶瓷基板(AlN/Al₂O₃/Si₃N₄)金属化
  • C++ PDF解析渲染库Poppler全方位实战:场景、库对比、CMake集成、可运行代码