QT摄像头采集

news2025/1/22 7:56:38

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

系统根据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_OBJECT

public:
    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;
}

运行效果图

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

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

相关文章

操作系统系列学习——操作系统接口

文章目录 前言操作系统接口 前言 一个本硕双非的小菜鸡&#xff0c;备战24年秋招&#xff0c;计划学习操作系统并完成6.0S81&#xff0c;加油&#xff01; 本文总结自B站【哈工大】操作系统 李治军&#xff08;全32讲&#xff09; 老师课程讲的非常好&#xff0c;感谢 【哈工大…

OpenAI官方: Sora不止是模型,更是世界模拟器!

在人工智能领域&#xff0c;视频数据的生成建模一直是一个极具挑战和创新的研究方向。从循环网络到生成对抗网络&#xff0c;再到自回归变换器和扩散模型&#xff0c;无数的尝试为我们展现了这一技术的日新月异。而今&#xff0c;OpenAI带来了其最新研究成果——Sora视频生成模…

TF-IDF,textRank,LSI_LDA 关键词提取

目录 任务 代码 keywordExtract.py TF_IDF.py LSI_LDA.py 结果 任务 用这三种方法提取关键词&#xff0c;代码目录如下&#xff0c; keywordExtract.py 为运行主程序 corpus.txt 为现有数据文档 其他文件&#xff0c;停用词&#xff0c;方法文件 corpus.txt 可以自己…

132 Linux 系统编程9 ,IO操作,lseek 函数,truncate函数,查看文件的表示形式 od -tcx filename

一 lseek 函数 函数说明&#xff1a;此函数用于文件偏移 Linux中可使用系统函数lseek来修改文件偏移量(读写位置) 每个打开的文件都记录着当前读写位置&#xff0c;打开文件时读写位置是0&#xff0c;表示文件开头&#xff0c;通常读写多少个字节就会将读写位置往后移多少个字…

数仓项目6.0(二)数仓

中间的几步意义就在于&#xff0c;缓存中间处理数据样式&#xff0c;避免重复计算浪费算力 分层 ODS&#xff08;Operate Data Store&#xff09; Spark计算过程中&#xff0c;存在shuffle的操作&#xff0c;而shuffle会将计算过程一分为二&#xff0c;前一阶段不执行完&…

使用Node.js开发一个文件上传功能

在现代 Web 应用程序开发中&#xff0c;文件上传是一个非常常见且重要的功能。今天我们将通过 Node.js 来开发一个简单而强大的文件上传功能。使用 Node.js 来处理文件上传可以带来许多好处&#xff0c;包括简单的代码实现、高效的性能和灵活的配置选项。 首先&#xff0c;我们…

32单片机基础:TIM定时中断

STM32中功能最强大&#xff0c;结构最复杂的一个外设——定时器 因为定时器的内容很多&#xff0c;所以本大节总共分为4个部分&#xff0c;8小节。 第一部分&#xff1a;主要讲定时器基本的定时功能,也就是定一个时间&#xff0c;然后让定时器每隔这个时间产生一个中断&#…

el-table 多选表格存在分页,编辑再次操作勾选会丢失原来选中的数据

el-table表格多选时&#xff0c;只需要添加type"selection"&#xff0c; row-key及selection-change&#xff0c;如果存在分页时需要加上reserve-selection&#xff0c;这里就不写具体的实现方法了&#xff0c;可以查看我之前的文章&#xff0c;这篇文章主要说一下存…

NR 2-STEP RA Absolute Timing Advance Command MAC CE的应用场景

3 GPP在 R2-2002413中将2-step RA引入&#xff0c;进而R16 38.321出现了 Absolute TAC MAC CE&#xff0c;在 NR Timing Advance(TA)_ntn rrc-CSDN博客 有提到这个MAC CE&#xff0c;当时以“absolute timing advance command MAC CE 在2-step RA的某个场景下使用”一笔带过&am…

【计算机网络】一些乱七八糟内容

MAC Media Access Control 用于在局域网&#xff08;LAN&#xff09;或广域网&#xff08;WAN&#xff09;中实现设备自动接入网络 "载波侦听多路访问"(Carrier Sense Multiple Access) CSMA/CD 是CSMA的升级版本&#xff0c;加入了序列号检测机制。 CSMA/CA 是CSM…

代码随想录算法训练营day24

题目&#xff1a;77. 组合 参考链接&#xff1a;代码随想录 回溯法理论基础 回溯三部曲&#xff1a;回溯函数模板返回值以及参数、回溯函数终止条件、回溯搜索的遍历过程。 模板框架&#xff1a; void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择&…

javaWeb个人学习02

会话技术 会话: 用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束.在一次会话中包含多次请求和响应 会话跟踪: 一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一个浏览器,以便在同一次会话的多次请求之间共享数据 会话跟踪方案: …

【MATLAB源码-第151期】基于matlab的开普勒化算法(KOA)无人机三维路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 开普勒优化算法&#xff08;Kepler Optimization Algorithm, KOA&#xff09;是一个虚构的、灵感来自天文学的优化算法&#xff0c;它借鉴了开普勒行星运动定律的概念来设计。在这个构想中&#xff0c;算法模仿行星围绕太阳的…

【数据结构】OJ面试题《设计循环队列》(题库+代码)

1.前言 本题需要结构体和数组的知识&#xff0c;记录每天的刷题&#xff0c;继续坚持&#xff01; 2.OJ题目训练 设计循环队列 设计你的循环队列实现。 循环队列是一种线性数据结构&#xff0c;其操作表现基于 FIFO&#xff08;先进先出&#xff09;原则并且队尾被连接在队…

备战蓝桥杯————如何判断回文链表

如何判断回文链表 题目描述 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true示例 2&#xff1a;…

备考2024年高考全国甲卷理科数学:历年填空题真题练一练

距离2024年高考还有三个多月的时间&#xff0c;今天我们来看一下2016~2023年全国甲卷高考理科数学的填空题真题&#xff0c;从历年真题中随机抽取5道题&#xff0c;并且提供解析。后附六分成长独家制作的在线练习集&#xff0c;科学、高效地反复刷这些真题&#xff0c;吃透真题…

WPF 【十月的寒流】学习笔记(3):DataGrid分页

文章目录 前言相关链接代码仓库项目配置&#xff08;省略&#xff09;项目初始配置xamlviewModel Filter过滤详细代码展示结果问题 Linq过滤CollectionDataxamlviewModel sql&#xff0c;这里用到数据库&#xff0c;就不展开了 总结 前言 我们这次详细了解一下列表通知的底层是…

ubuntu+QT+ OpenGL环境搭建和绘图

一&#xff0c;安装OpenGL库 安装OpenGL依赖项&#xff1a;运行sudo apt install libgl1-mesa-glx命令安装OpenGL所需的一些依赖项。 安装OpenGL头文件&#xff1a;运行sudo apt install libgl1-mesa-dev命令来安装OpenGL的头文件。 安装GLUT库&#xff1a;GLUT&#xff08;Ope…

PostgreSQL中int类型达到上限的一些处理方案

使用int类型作为表的主键在pg中是很常见的情况&#xff0c;但是pg中int类型的范围在-2147483648到2147483647&#xff0c;最大只有21亿&#xff0c;这个在一些大表中很容易就会达到上限。一旦达到上限&#xff0c;那么表中便没办法在插入数据了&#xff0c;这个将会是很严重的问…

服务网格Service Mesh和Istio

文章目录 服务网格&#xff08;Service Mesh&#xff09;市场上三种服务网格解决方案服务网格的特征流量管理安全性可观察性 Istio简介Istio提供了什么功能服务 &#xff1f;Istio 核心特性流量管理安全可观察性 平台支持 服务网格&#xff08;Service Mesh&#xff09; 服务网…