qt学习:多媒体Multimedia摄像头

2024-01-31 02:20

本文主要是介绍qt学习:多媒体Multimedia摄像头,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

注意

头文件

模块

步骤

实例

定义一个摄像头对象和一个摄像头拍照对象

在构造函数里获取当前电脑上所有可以用的摄像头存入链表

启动摄像头按钮点击事件

退出按钮点击事件

拍照按钮点击事件

保存图片槽函数定义和实现


摄像头在Qt Multimedia多媒体模块里

QCamera可与用于取景器显示的QCameraViewfinder、视频录制的QMediaRecorder、图像拍摄的QCamerAmageCapture一起使用

可以用QCameraInfo列出可以使用的相机并选择要使用的相机

摄像头功能

  • 实时画面QCameraViewfinder
  • 录像QMediaRecorder
  • 抓照QCameralmageCa

注意

摄像头类QCamera先通过绑定取景器显示QCameraViewfinder来获取摄像头的数据,再将取景器显示QCameraViewfinder与要显示的界面控件绑定才可以显示到界面控件上。

头文件

#include <QCameraInfo>
#include <QCamera>//摄像头类
#include <QCameraViewfinder>//摄像头取景器
#include <QCameraImageCapture>//摄像头拍照

模块

QT       += core gui multimedia multimediawidgets

步骤

  1. 定义一个摄像头对象和一个摄像头拍照对象
  2. 获取当前电脑上所有可以用的摄像头存入链表
  3. 实例化一个摄像头对象和摄像头取景器对象
  4. 取景器和ui控件进行绑定
  5. 取景器显示
  6. 将摄像头对象与取景器对象进行绑定
  7. 新疆一个图像对象
  8. 当捕捉到画面就保存下来
  9. 设置静态捕捉
  10. 启动摄像头
  11. 拍照
  12. 保存图片
  13. 退出摄像头

实例

定义一个摄像头对象和一个摄像头拍照对象

private:QCamera *camera;//摄像头对象QCameraImageCapture* imageCapture;//摄像头拍照类的对象

在构造函数里获取当前电脑上所有可以用的摄像头存入链表

    //获取当前主机上 所有可用的摄像头列表const QList<QCameraInfo> cameras = QCameraInfo::availableCameras();//将摄像头列表显示到下拉控件中for(int i=0; i<cameras.size(); i++){ui->comboBox->addItem(cameras.at(i).deviceName());}

启动摄像头按钮点击事件

    //实例化一个摄像头类的对象,参数为上面列表中的摄像头//可以选择默认的摄像头QCameraInfo::defaultCamera()camera = new QCamera(ui->comboBox->currentText().toUtf8());//实例化一个摄像头取景器类的对象//取景器跟当前界面上的UI控件进行绑定QCameraViewfinder *viewfinder = new QCameraViewfinder(ui->label_show);//根据控件的大小调整取景器的大小viewfinder->resize(ui->label_show->size());//取景器显示viewfinder->show();//将摄像头对象与取景器对象进行绑定//也就是让摄像头拍摄到的画面显示到取景器控件上camera->setViewfinder(viewfinder);//如果需要拍照就要下面的步骤,不需要可以不用,但也要启动摄像头//新建摄像头的拍照对象imageCapture = new QCameraImageCapture(camera);//当捕捉到画面之后,会发送一个信号,将信号关联函数,在函数中保存下来connect(imageCapture,&QCameraImageCapture::imageCaptured,this,&Widget::onSaveCaptureImage);//设置成静态捕捉,也就是说捕捉静态画面camera->setCaptureMode(QCamera::CaptureStillImage);//启动命令camera->start();

退出按钮点击事件

    camera->stop();delete camera;

拍照按钮点击事件

    //捕捉图片,捕捉后会触发一个信号,调用槽函数来实现保存图片imageCapture->capture();

保存图片槽函数定义和实现

//定义
private slots:void onSaveCaptureImage(int id, const QImage &preview);//实现
void Widget::onSaveCaptureImage(int id, const QImage &preview)
{//通过调用QIamge对象来保存图片preview.save("1.bmp");
}

这篇关于qt学习:多媒体Multimedia摄像头的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/662286

相关文章

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Qt中实现多线程导出数据功能的四种方式小结

《Qt中实现多线程导出数据功能的四种方式小结》在以往的项目开发中,在很多地方用到了多线程,本文将记录下在Qt开发中用到的多线程技术实现方法,以导出指定范围的数字到txt文件为例,展示多线程不同的实现方... 目录前言导出文件的示例工具类QThreadQObject的moveToThread方法实现多线程QC

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

Qt QCustomPlot库简介(最新推荐)

《QtQCustomPlot库简介(最新推荐)》QCustomPlot是一款基于Qt的高性能C++绘图库,专为二维数据可视化设计,它具有轻量级、实时处理百万级数据和多图层支持等特点,适用于科学计算、... 目录核心特性概览核心组件解析1.绘图核心 (QCustomPlot类)2.数据容器 (QCPDataC

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议

Python如何将OpenCV摄像头视频流通过浏览器播放

《Python如何将OpenCV摄像头视频流通过浏览器播放》:本文主要介绍Python如何将OpenCV摄像头视频流通过浏览器播放的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完... 目录方法1:使用Flask + MJPEG流实现代码使用方法优点缺点方法2:使用WebSocket传输视

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和