QT打开摄像头采集

news2025/2/21 4:24:30

QT打开摄像头采集

今天好不容易把opencv的环境装好,然后想学习一下人脸识别的功能,但是在图书馆坐了4个多小时了,屁股疼就先写个摄像头采集的功能,明天继续学习吧,废话不多,嚼个奶片开始发车!!!!!!!!

我们设计我们的UI界面

非常简单!

UI界面设计

就这么简单,我们在Widget里显示图像,然后这个下拉框用来选择摄像头

然后我们来编写我们的代码

代码编写 

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_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::Widget *ui;

    QCamera *camera;                   //相机
    QCameraViewfinder *viewfinder;     //取景器
    QList<QCameraInfo> cameras;        //相机列表
};

widget.cpp文件

#include "widget.h"
#include "ui_widget.h"
#include <QCamera>
#include <QCameraInfo>
#include <QCameraViewfinder>
#include <QDebug>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 获取所有可用的相机信息
    cameras = QCameraInfo::availableCameras();
    if(cameras.count() > 0) {
        // 如果有可用的相机,则使用第一个相机创建QCamera实例
        camera = new QCamera(cameras.at(0));
    }

    // 创建一个取景器QCameraViewfinder,并设置其父对象为当前Widget
    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);

    // 连接下拉框camera的选择改变信号到槽函数,用于更换相机
    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();
    });
}

Widget::~Widget()
{
    delete ui;
    delete camera;
}

// 移除了captureImage函数和相关的信号连接

好嘞,去吃饭去了,再不去没饭了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2129024.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3.安卓逆向-java语言控制流和数据类型

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;图灵Python学院 上一个内容&#xff1a;2.安卓逆向-初识java语言 上一个内容里写了编写java语言代码的环境搭建&#xff0c;也就是下载…

你的个人生成式AI创新课程

我曾经写过许多博客文章&#xff0c;讨论如何使用生成式AI&#xff08;GenAI&#xff09;工具&#xff0c;例如OpenAI ChatGPT、微软Copilot和Google Gemini来提升专业效率和个人发展。然而&#xff0c;我们必须从仅仅使用这些GenAI工具来提高生产力的思维模式&#xff0c;转变…

echarts 关系图 legend 图例不显示问题

关系图希望显示图例&#xff0c;如下效果&#xff1a; 按照常规echarts图表的配置&#xff0c;配置完legend&#xff0c;图例居然不显示。 legend: {show: true,icon: circle,left: left }经过一番查找和思考&#xff0c;原来是因为series配置中没有设置categories项&#xf…

通信工程学习:什么是SLF签约数据定位功能

SLF&#xff1a;签约数据定位功能 SLF&#xff08;Subscription Locator Function&#xff09;即签约数据定位功能&#xff0c;是IMS&#xff08;IP Multimedia Subsystem&#xff09;IP多媒体子系统体系结构中的一个关键组成部分。其主要功能是在网络运营商部署了多个独立可寻…

Android平台RTMP|RTSP播放器如何回调YUV或RGB数据?

技术选型 我们知道&#xff0c;Android平台一般RTMP|RTSP播放器通常不直接提供回调YUV或RGB数据的功能。如果播放端有视觉分析或类似的需求&#xff0c;需要播放端&#xff0c;能支持YUV或ARG的数据回调&#xff0c;一般来说&#xff0c;可参考的方法如下&#xff1a; 1. 使用…

尚硅谷的尚乐代驾项目

项目源码 乐尚代驾项目: 重做乐尚代驾项目 (gitee.com) 一 项目介绍 1 介绍 【**乐尚代驾**】代驾是一种新型的出行服务模式&#xff0c;主营业务&#xff1a;酒后代驾、商务代驾、长途代驾&#xff0c;其主要特点是通过线上平台为用户提供代驾服务&#xff0c;伴随中国家…

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、…

Navicat备份数据库

Navicat备份数据库 &#x1f4d4; 千寻简笔记介绍 千寻简文库已开源&#xff0c;Gitee与GitHub搜索chihiro-doc&#xff0c;包含笔记源文件.md&#xff0c;以及PDF版本方便阅读&#xff0c;文库采用精美主题&#xff0c;阅读体验更佳&#xff0c;如果文章对你有帮助请帮我点一…

【Hot100】LeetCode—300. 最长递增子序列

目录 1- 思路题目识别动规五部曲 2- 实现⭐最长递增子序列——题解思路 3- ACM 实现 原题链接&#xff1a;300. 最长递增子序列 1- 思路 题目识别 识别1 &#xff1a;给出一个数组输入 nums识别2&#xff1a;严格递增的子序列&#xff0c;子序列可以是不连续的 动规五部曲 …

数据处理与统计分析篇-day02-Linux进阶

day02-Linux进阶 补充昨日内容 Linux基础 文件编辑 命令模式 编辑模式 esc回到命令模式 正常编辑 底行(底线)模式 查看Linux命令帮助文档 # --help 可以查看命令的详细信息 命令名 --help ​ # 例如: ls --help ​ # man 可以查看命令的主要(简单)信息 man 命令名…

树莓派替代台式计算机?树莓派上七款最佳的轻量级操作系统!

​Raspberry Pi 是一款超级实惠的单板计算机&#xff08;SBC&#xff09;&#xff0c;可用于各种不同的项目。Raspberry Pi 的一些最流行用途包括将其变成媒体播放器或模拟机器。鉴于该系统的多功能性&#xff0c;有人想知道它是否可以替代台式计算机。好吧&#xff0c;它可以&…

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的&#xff0c;专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关&#xff0c;每一关都包含着不同上传方式。 注意 1.每一关没有固定的…

Postman做接口测试时一些实用的操作

Postman 之前是作为Chrome 的一个插件&#xff0c;现在要下载应用才能使用。 以下是postman 的界面&#xff1a; 各个功能区的使用如下&#xff1a; 快捷区&#xff1a; 快捷区提供常用的操作入口&#xff0c;包括运行收藏夹的一组测试数据&#xff0c;导入别人共享的收藏夹测…

论文解读:利用大模型进行基于上下文的OCR校正

论文地址&#xff1a;https://arxiv.org/pdf/2408.17428 背景概述 研究问题&#xff1a;这篇文章要解决的问题是如何利用预训练的语言模型&#xff08;LMs&#xff09;来改进光学字符识别&#xff08;OCR&#xff09;的质量&#xff0c;特别是针对报纸和期刊等复杂布局的文档。…

GDPU Java Web 天码行空1

目的&#xff1a; 1、 掌握Java Web编程环境的配置 2、 创建简单的Web工程&#xff0c;并了解Web工程下各目录的作用 3、 掌握部署、运行Web工程的流程 实验过程&#xff1a; 一、完成如下要求。 安装并设置JDK 1.8、Tomcat 9.0&#xff08;tomcat和jdk版本匹配请看下图&am…

初创企业的信息架构蓝图:从构想到实施的全面攻略

初创企业的信息架构蓝图&#xff1a;从构想到实施的全面攻略 在数字化转型的大趋势下&#xff0c;初创企业面临着巨大的机遇和挑战。如何快速搭建稳健的信息架构蓝图&#xff0c;以支持业务增长、提高运营效率并确保数据安全&#xff0c;成为初创企业成功的关键因素。《信息架…

动手学习RAG:迟交互模型colbert微调实践 bge-m3

动手学习RAG: 向量模型动手学习RAG: BGE向量模型微调实践]()动手学习RAG: BCEmbedding 向量模型 微调实践]()BCE ranking 微调实践]()GTE向量与排序模型 微调实践]()模型微调中的模型序列长度]()相似度与温度系数 本文我们来进行ColBERT模型的实践&#xff0c;按惯例&#xff…

5G毫米波阵列天线仿真——CDF计算(手动AC远场)

之前写过两个关于阵列天线获取CDF的方法&#xff0c;一个通过Realized Gain&#xff0c;一个通过Power Flow&#xff0c; 三个案例中都是3D中直接波束扫描&#xff0c;并没有展示场路结合的情况。这期我们用Power Flow的方法&#xff0c;手动合并AC任务的波束计算CDF。 还是用…

[Power save]wifi省电模式

管理帧 beacon DTIM AP的beacon中携带TIM&#xff08;Traffic indication Map&#xff09;字段&#xff0c;里面包含DTIM Count&#xff0c;DTIM Period&#xff0c;Bitmap Control和Part Virt Bmap字段 DTIM Period&#xff1a;AP缓存数据的能力&#xff0c;处于PS状态下的…

B2B销售:成功所需的工具

谈到B2B销售&#xff0c;拥有合适的工具可以带来巨大的差异。合适的工具可以提高效率和效能&#xff0c;简化操作&#xff0c;节省成本并提供竞争优势。 探索优化B2B销售栈的重要组成部分时&#xff0c;我们可以发现&#xff0c;正确的技术能让您的业务在未来取得成功。 电子…