QT摄像头采集
主界面为显示框,两个下拉框,一个是所有相机,一个是相机支持的分辨率

系统根据UI界面自动生成的部分不再描述,以下为其他部分源码
widget.h
#include <QWidget>
#include <QMouseEvent>
class QCamera;
class QCameraViewfinder;
class QCameraImageCapture;
class QCameraInfo;
class QCameraViewfinderSettings;namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private:Ui::Widget *ui;QCamera *camera; //相机QCameraViewfinder *viewfinder; //取景器QList<QCameraInfo> cameras; //相机列表QList<QSize> mResSize = {}; //分辨率列表
};
main.cpp
#include "widget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QCamera>
#include <QCameraInfo>
#include <QCameraViewfinder>
#include <QCameraImageCapture>
#include <QList>
#include <QFileDialog>
#include <QDebug>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);cameras = QCameraInfo::availableCameras();if(cameras.count() > 0) {camera = new QCamera(cameras.at(0));}viewfinder = new QCameraViewfinder(this);camera->setViewfinder(viewfinder);viewfinder->resize(600, 350);camera->start();//添加初始化的相机选项for(const QCameraInfo &cameraInfo:cameras) {ui->comboBox_cam->addItem(cameraInfo.description());}ui->comboBox_cam->setCurrentIndex(0);//添加初始化相机的分辨率选项mResSize = camera->supportedViewfinderResolutions();for (const QSize &msize:mResSize) {ui->comboBox_format->addItem(QString::number(msize.width(), 10) + "*" + QString::number(msize.height(), 10));}ui->comboBox_format->setCurrentIndex(0);QCameraViewfinderSettings init;init.setResolution(mResSize[0]);camera->setViewfinderSettings(init);connect(ui->comboBox_cam,QOverload<int>::of(&QComboBox::activated),[=](int index){camera->stop();delete camera;camera=new QCamera(cameras[index]);camera->setViewfinder(viewfinder); //设置取景器camera->start();//删除前相机的所有分辨率内容for (int i = 0; i < mResSize.size(); i++) {ui->comboBox_format->removeItem(0);}mResSize.clear();mResSize = camera->supportedViewfinderResolutions();for (const QSize &msize:mResSize) {ui->comboBox_format->addItem(QString::number(msize.width(), 10) + "*" + QString::number(msize.height(), 10));}ui->comboBox_format->setCurrentIndex(0);QCameraViewfinderSettings reset;reset.setResolution(mResSize[0]);camera->setViewfinderSettings(reset);});connect(ui->comboBox_format, QOverload<int>::of(&QComboBox::activated), [=](int index){//重新设置摄像头参数QCameraViewfinderSettings reset;reset.setResolution(mResSize[index]);camera->setViewfinderSettings(reset);});}
Widget::~Widget()
{delete ui;
}
运行效果图


相关文章:
QT摄像头采集
主界面为显示框,两个下拉框,一个是所有相机,一个是相机支持的分辨率 系统根据UI界面自动生成的部分不再描述,以下为其他部分源码 widget.h #include <QWidget> #include <QMouseEvent> class QCamera; class QCamer…...
C语言第三十四弹---动态内存管理(下)
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 动态内存管理 1、动态内存经典笔试题分析 1.1、题目1 1.2、题目2 1.3、题目3 1.4、题目4 2、柔性数组 2.1、柔性数组的特点 2.2、柔性数组的使用 2.3、…...
PDN分析及应用系列二-简单5V电源分配-Altium Designer仿真分析-AD
PDN分析及应用系列二 —— 案例1:简单5V电源分配 预模拟DC网络识别 当最初为PCB设计打开PDN分析仪时,它将尝试根据公共电源网络命名法从设计中识别所有直流电源网络。 正确的DC网络识别对于获得最准确的模拟结果非常重要。 在示例项目中已经识别出主DC网络以简化该过程。 …...
Vue开发实例(一)Vue环境搭建第一个项目
Vue环境搭建&第一个项目 一、环境搭建二、安装Vue脚手架三、创建Vue项目 一、环境搭建 下载方式从官网下载:http://nodejs.cn/download/ 建议下载v12.16.0版本以上的,因为版本低无法创建Vue的脚手架 检验是否安装成功 配置环境变量 新增NODE_HOME&…...
将SpringBoot项目改造成solon项目
solon项目介绍 官网 Java “生态型”应用开发框架:更快、更小、更简单。 启动快 5 ~ 10 倍;并发高 2~ 3 倍; 内存省 1/3 ~ 1/2;打包缩到 1/2 ~ 1/10;同时支持 java8, java11, java17, java21&a…...
更详细的软件测试理论基础:流程,开发、测试模型,测试分类,测试用例及其设计方法,缺陷
文章目录 一、测试流程二、开发模型1、 瀑布模型2、增量模型3、快速模型4、其他 三、测试模型1、V模型2、W模型 四、测试分类五、测试用例 test case六、测试用例设计方法1、等价类划分法2、边界值分析法3、因果图法4、判定表法5、正交法6、场景法7、流程分析法8、错误推测法方…...
input css padding
这样控件会跑出外套控件在HTML JSP里面是经常出现的。但有些外国adobe的as控件不存在这种情况,这是因为内层控件定义的时候不能超出外层控件的范围。 修改下:去掉原来css padding,然后加上宽度和高度...
如何打印 springboot 框架中 接收请求的日志
在 Spring Boot 框架中,您可以使用日志来记录接收请求和发送响应的详细信息。Spring Boot 默认使用 SLF4J(Simple Logging Facade for Java)作为日志抽象层,并支持多种日志实现,如 Logback、Log4j2 等。以下是一种常见…...
JVM的内存区域划分
JVM即Java虚拟机,是Java实现跨平台交互能力的核心,Java编译后的.class文件,就是通过虚拟机和操作系统进行交互的; 常见的虚拟机有:JVM、VMwave、Virtual Box,目前最主流使用的JVM是HotSpot VM;…...
YOLOv9有效改进|使用动态蛇形卷积Dynamic Snake Convolution
专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,主力高效涨点!!! 一、改进点介绍 使用ICCV2023中的动态蛇形卷积替换YOLOv9网络中的Conv模块。 二、Dynamic Snake Convolution模块详解 2.1 模块简介 应用场景&#x…...
设计模式学习笔记 - 设计原则 - 1.单一职责原则
前言 前面我们提到过 SOLID 原则,实际上 SOLID 由 5 个设计原则组成,分别是:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖反转原则。它们分别对应 SLOID 中的 S、O、L、I、D 这 5 个英文字母。 今天来学习下 SOLID 原则中的第…...
飞天使-学以致用-devops知识点4-SpringBoot项目CICD实现(实验失败,了解大概流程)
文章目录 代码准备创建jenkins 任务测试推送使用项目里面的jenkinsfile 进行升级操作 文字版本流程项目构建 代码准备 推送代码到gitlab 代码去叩叮狼教育找 k8s 创建jenkins 任务 创建一个k8s-cicd-demo 流水线任务 将jenkins 里面构建时候的地址还有token, 给到…...
使用HTML5画布(Canvas)模拟图层(Layers)效果
使用HTML5画布(Canvas)模拟图层(Layers)效果 在图形处理和计算机图形学中,图层(Layers)是指将图像分成不同的可独立编辑、组合和控制的部分的技术或概念。每个图层都可以包含不同的图形元素、效…...
违背祖训,微软骚操作强制用户更新至 Win 11 23H2
话说,大伙儿有让 Windows 操作系统一直保持最新版习惯吗? 根据以往惯例,Windows 系统更新是个比较玄学的存在,谁也不能保证随手更新后会不会出现什么奇葩 Bug。 因此对于不少同学来说,Windows 更新到一个稳定版本后&a…...
MISRA C++ 2023指南:您需要了解的一切
MISRA C 2023可以帮助使用现代C语言的组织开发安全关键型软件。使用新的MISRA标准,开发人员可以通过确保和记录其软件应用程序的MISRA合规性,满足IEC 6108或ISO 26262等功能安全标准给出的静态分析要求。 什么是MISRA C2023? 以便使用C17进行安全可靠…...
Vue:【亲测可用】父组件数组包对象,传给子组件对象,子组件修改属性(字段)后,父组件没有更新
场景:vue中父组件数组包对象,传给子组件对象,子组件修改属性(字段)后,父组件没有更新 代码: # 父组件 <div v-for"(object, name, index) in arr" :key"index"><…...
hbase学习十:客户端实现与Meta表解析
1、客户端实现 hbase社区的客户端一般是java客户端。 HBase也支持Shell交互式客户端。Shell客户端实质是用JRuby(用Java编写的Ruby解释器,方便Ruby脚本跑在JVM虚拟机上)脚本调用官方HBase客户端来实现的。因此,各种客户端的核心实现都在社区Java版本客户端上。 客户端访…...
《OpenScene: 3D Scene Understanding with Open Vocabularies》阅读笔记1
传统的3D场景理解方法依赖于带标签的3D数据集,用于训练一个模型以进行单一任务的监督学习。我们提出了OpenScene,一种替代方法,其中模型在CLIP特征空间中预测与文本和图像像素共同嵌入的3D场景点的密集特征。这种零样本方法实现了与任务无关的训练和开放词汇查询。例如,为了…...
数据结构 - Trie树(字符串统计、最大异或对)
文章目录 前言Part 1:Trie字符串统计1.题目描述输入格式输出格式数据范围输入样例输出样例 2.算法 Part 2:最大异或对1.题目描述输入格式输出格式数据范围输入样例输出样例 2.算法 前言 本篇博客将介绍Trie树的常见应用,包括:Trie…...
2. vue 工程创建
1. 基于 vite创建 官方文档: https://v3.cn.vuejs.org/guide/installation.html#vite vite官网: https://vitejs.cn 使用vite创建的优势: 开发环境中,无需打包操作,可快速的冷启动。轻量快速的热重载(HMR)。真正的按需编译,不再…...
生物医药合成生物学解决方案(2026版)
生物医药合成生物学解决方案(2026版) 目录 第1章项目概述 7 1.1项目背景 7 1.2项目目标 8 1.2.1技术目标 8 1.2.2业务目标 8 1.2.3经济目标 9 1.2.4社会目标 9 1.3项目范围 10 1.4项目意义 11 1.4.1产业意义 11 1.4.2技术意义 11 1.4.3经济意义 11 1.4.4社会意义 12 1.5项目…...
Unity资源归档:构建可信交付的四大技术支柱
1. 为什么“资源归档”不是打包,而是Unity项目生命周期的隐形分水岭在Unity项目做到中后期,你大概率会遇到这样几个信号:Build时间从3分钟涨到12分钟;AssetBundle生成脚本每次都要手动删旧包、清缓存、重设Variant;美术…...
山东大学软件学院项目实训-基于语言大模型的智能居家养老健康守护系统-个人博客(五)
智能健康陪诊与个性化干预 Agent 的设计与实现 前言 在基于语言大模型的智能居家养老系统中,我主要负责面向老人端的两个核心 AI Agent 的构建:健康陪诊 Agent 与 健康干预 Agent。前者作为首页全科问答入口提供 24 小时健康咨询服务,后者深度…...
卷积神经网络在天文图像中自动搜寻双活动星系核的工程实践
1. 项目概述:当AI遇见星空,寻找宇宙中的“双生子” 在浩瀚的宇宙中,超大质量黑洞的并合是星系演化剧本里的高潮章节。理论告诉我们,当两个星系在引力作用下最终合二为一时,它们中心的“巨兽”——超大质量黑洞——也会…...
UE5 GAS实战:用一张曲线表格(Curve Table)搞定RPG游戏中的等级成长与回复效果
UE5 GAS实战:用曲线表格构建动态RPG成长系统在角色扮演游戏的开发中,数值成长系统往往是最考验设计功底的环节之一。想象一下,当玩家从1级升到10级的过程中,如果每次升级带来的属性提升都是固定数值,这种线性增长很快就…...
实战精通openpilot自动驾驶系统:从安装到深度定制的完整指南
实战精通openpilot自动驾驶系统:从安装到深度定制的完整指南 【免费下载链接】openpilot openpilot is an operating system for robotics. Currently, it upgrades the driver assistance system on 300 supported cars. 项目地址: https://gitcode.com/GitHub_T…...
Unity游戏本地化:XUnity Auto Translator运行时文本注入方案
1. 这不是“翻译插件”,而是一套专为Unity游戏本地化设计的轻量级运行时注入方案你有没有遇到过这样的情况:接手一个老项目,UI文本全写死在代码里,或者Text组件上直接填了中文字符串;美术给的按钮图上还带着“开始游戏…...
物理生物学研究报告【20260015】
文章目录抛球入框实验报告一、实验目的二、实验装置三、实验方法四、实验结果4.1 无弹跳实验(A组)4.2 允许弹跳实验(B组)五、分析与讨论5.1 无弹跳与弹跳的参数差异5.2 恢复系数的影响5.3 误差来源六、结论七、致谢抛球入框实验报…...
2026最新个人AI编程软件实测盘点:独立开发者做副业高效开发必备
2026最新个人AI编程软件实测盘点:独立开发者做副业高效开发必备很多独自做开发的从业者常会疑惑,零基础能不能借助智能工具快速写出可用程序?低成本状态下有没有适配全栈杂活、适合快速试错的AI编程软件?面对市面上品类繁杂的辅助…...
喷注重组方案对比:E-scheme与WTA在抗污染与子结构分析中的应用
1. 喷注重组方案:从基础概念到核心原理在粒子物理的高能对撞实验中,比如大型强子对撞机(LHC),我们探测到的最终产物是成千上万个带电和中性粒子。为了理解这些看似混乱的粒子流背后隐藏的物理过程——比如一个高能夸克…...
