• QT中摄像头的使用


    QT中摄像头相关类

    在这里插入图片描述

    摄像头的使用

    QT中摄像头的使用主要分为三个方面,显示画面抓取图片视频录制。这三个方面对应着摄像模块的三种模式。模式如下:

    ConstantValueDescription
    QCamera::CaptureViewfinder0相机仅配置为显示取景器。
    QCamera::CaptureStillImage0x01相机已配置为静态帧捕获
    QCamera::CaptureVideo0x02相机已配置为用于视频捕获。

    这三种模式都是基于QCamera对象的。在QCamera之前的操作都是一样的,例如获取设备中的摄像头等。

    QT中摄像头的取景器模式,个人理解取景器模式就是单纯的将摄像机额画面显示到界面中。这个实现很简单只需要两个步骤。

    1、获取系统中的摄像头设备,这里使用QCameraInfo中的函数availableCameras函数,此函数返回的是一个设备列表。

    2、使用QCamera打开摄像头,并将其添加到要显示的窗口即可,这里需要注意显示摄像头的窗口为QCameraViewfinder窗口,可以将QWidget提升为QCameraViewfinder。

    代码如下:

    QList  camerainfos  = QCameraInfo::availableCameras();//获取系统中摄像头
    foreach (QCameraInfo info, camerainfos) { //通过遍历摄像头列表,将器添加到下拉控件中
        ui->comboBox->addItem(info.deviceName());
    }
    .....
    camera = new QCamera(ui->comboBox->currentText().toUtf8());//选在摄像头设备,并构造QCamera对象。
    camera->setViewfinder(ui->widget); //设置摄像头的显示窗体
    camera->start();//启动摄像,到这里界面就可以看到摄像头中的画面了
    .....
    camera->stop();//停止摄像,摄像头画面将会暂停
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    但是在取景器模式中我们可以有两个设置可以进行画面的调整,一个是设置显示窗口可以设置显示界面的亮度、对比度、是否全屏显示、色调、饱和度等都可以通过QCameraViewfinder的函数进行调整。另一个是设置QCamera取景器的配置,包括(设置最大帧率、设置最小帧率、设置像素长宽比、设置像素格式等)。QCamera还可以设置曝光和聚焦,通过QCameraExposure和QCameraFocus。

    摄像头的使用首先是肯定是显示画面,但是除了显示画面我们可能还需要保存视频和从视频中获取图片。

    QT中在视频中抓取图片的步骤:抓取图片的时候需要使用都QCameraImageCapture

    1、创建QCameraImageCapture对象,传入的参数为QCamera。

    2、设置相机模式为拍照模式 m_camera->setCaptureMode(QCamera::CaptureStillImage);

    3、QCameraImageCapture对象调用capture函数进行图片的保存,传入参数为保存路径。

    代码如下:

        QString path = QFileDialog::getSaveFileName(nullptr, "保存图片",
                                                    nullptr, "*.jpg");
        if(m_imageCapture == nullptr){
             m_imageCapture = new QCameraImageCapture(m_camera);
        }
        //设置为拍照模式
        m_camera->setCaptureMode(QCamera::CaptureStillImage);
        //对相机锁定(异步操作)
        m_camera->searchAndLock();
        //拍照并且把照片保存到这个路径中
        m_imageCapture->capture(path);
        //解锁
        m_camera->unlock();
    
    	//需要注意的是QCamera已经初始化配置过摄像头了
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在拍照模式的时候保存的图片可以设置相关参数,出去QCamera设置的参数,图片的参数通过QCameraImageCapture类的setEncodingSettings函数设置,参数包括(图像质量、分辨率、编码器、编码等)。

    QT在window中不能进行摄像头视频的保存,因此这里不多说,

  • 相关阅读:
    QT 获取随机颜色值设置label背景色 代码
    使用Cloudflare Worker加速docker镜像
    jQuery 用 post() 传递数组给 php
    Linux常用命令学习3
    【蓝桥杯专项】备战蓝桥杯—刷题记录站
    测试日报如何写能体现当日工作量呢 ?前美团技术大佬给提供的模版 ,看着还不错 。
    关于http请求、文件处理以及空间地理信息处理的工具类介绍
    GO面试题集锦
    【Python】-- 列表list(基本语法、常用方法)
    Scala---字符串、集合
  • 原文地址:https://blog.csdn.net/qq_43812868/article/details/132854482