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)。真正的按需编译,不再…...
黑马程序员python核心语法-基础知识
python快捷键使用CtrlAlts 打开软件设置CtrlD 复制当前行代码CtrlAlt上\下 将当前代码上移或下移Ctrlshiftf10 运行当前代码文件Ctrlf6:重命名文件Ctrlf 搜索# 字面量的写法 print(100) # 整数(int) print(3.14) # 浮点数/小数(float) print(True) # 布尔…...
【更新至2024年】上市公司ESG评级评分数据合集(十份数据:华证年度、华证季度、Wind、商道融绿、富时罗素、彭博、润灵环球、MSCI、cnrds、盟浪)
【更新至2024年】上市公司ESG评级评分数据合集(十份数据:华证年度、华证季度、Wind、商道融绿、富时罗素、彭博、润灵环球、MSCI、cnrds、盟浪) 一、2009-2024年上市公司华证esg评级、评分年度数据(含细分项) 二、20…...
AI时代的算法思维:大经典排序学习驯
引言 在现代软件开发中,性能始终是衡量应用质量的重要指标之一。无论是企业级应用、云服务还是桌面程序,性能优化都能显著提升用户体验、降低基础设施成本并增强系统的可扩展性。对于使用 C# 开发的应用程序而言,性能优化涉及多个层面&#x…...
Ryujinx开源Switch模拟器:跨平台游戏体验的技术实现与优化指南
Ryujinx开源Switch模拟器:跨平台游戏体验的技术实现与优化指南 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 在游戏硬件快速迭代的今天,玩家们常常面临一个困…...
TF-IDF BM25 原理及应用
1. 什么是TF-IDFTF-IDF(Term Frequency-Inverse Document Frequency, 词频-逆文档频率),是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在…...
防撤回解决方案:系统级保护的即时通讯消息安全增强
防撤回解决方案:系统级保护的即时通讯消息安全增强 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://gitcode.com/G…...
GPUStack 在华为昇腾 I A 服务器上的保姆级部署指南几
开发个什么Skill呢? 通过 Skill,我们可以将某些能力进行模块化封装,从而实现特定的工作流编排、专家领域知识沉淀以及各类工具的集成。 这里我打算来一次“套娃式”的实践:创建一个用于自动生成 Skill 的 Skill,一是用…...
看懂 Dependency Analyzer:从 SQL 依赖到性能复杂度,系统拆解 ABAP CDS 视图的隐藏结构
在做 ABAP CDS 建模时,很多开发者都会遇到一种很典型的困惑:表面上看,当前这个 CDS 视图只是从几个字段里做了投影,代码也不算长;可一到激活、预览数据、做 OData 暴露,甚至进入 RAP 场景以后,系统表现却突然变得复杂,查询变慢,层级难以理解,出了问题也很难定位。造成…...
Hitboxer终极指南:如何免费解决游戏键盘SOCD冲突的专业方案
Hitboxer终极指南:如何免费解决游戏键盘SOCD冲突的专业方案 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 还在为游戏中的键盘方向冲突而烦恼吗?当你在激烈的对战中同时按下左右方向键&…...
天心大师浅谈人工智能与美学设计,如何营建大型AI盆景园
青石板路上落着刚被山风扫下的新竹叶,天心大师正端坐在临着半月池的石案旁,石案上摆着一盆用灵璧石拼出远山层峦的 AI 辅助创作盆景,池里游着几尾赤鳞红鱼,落在肩头的山隼歪着脑袋,盯着石案屏幕上流动的 AI 草图叫了两…...
