400-123-4657
行业资讯
您当前的位置: 首页 > 新闻动态 > 行业资讯

QT中摄像头使用详解:显示画面、抓取图片与视频录制模式解析

时间:2025-03-06

QT相机相关类别

使用相机

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

恒定效果

Qcamera :: CaptureViewFinder

相机仅配置为取景器。

QCAMERA :: CATRESTILLIMAGE

0x01

相机已配置为静态框架捕获

Qcamera :: CaptureVideo

0x02

该相机已配置为视频捕获。

这三个模式均基于QCamera对象。 QCamera之前的操作相同,例如在设备中获取相机,等等。

我个人理解取景器模式是简单地将相机的额头屏幕显示到界面中,我个人知道相机的取景器模式。此实现很简单,只需要两个步骤。

1。将相机设备获取系统中。在这里,我们在qcamerainfo中使用功能可用的功能。此功能返回设备列表。

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();//停止摄像,摄像头画面将会暂停

但是,在取景器模式下,我们可以有两个设置来调整屏幕。一种是设置显示窗口以设置亮度,对比度,是否以全屏,音调,饱和度等显示,可以通过qcameraviewfinder函数进行调整。另一个是设置QCAMERA取景器的配置,包括(设置最大帧速率,设置最小帧速率,设置像素纵横比,设置像素格式等)。 QCamera还可以通过QCamera暴露和Qcamerafocus设置曝光和聚焦。

首先要做的是使用相机显示屏幕,但是除了显示屏幕外,我们还需要保存视频并从视频中获取图片。

在QT中捕获图片的步骤:抓取图片时,您需要使用qcameraimagecapture类

1。创建一个qcameraimagecapture对象,而传递的参数为qcamera。

2。将相机模式设置为照片模式m_camera-> setCapturemode(qcamera :: CaptureStillimage);

3。QCAMERAIMAGECAPTURE对象调用捕获函数以保存图像,而传递的参数是保存路径。

代码如下:

    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已经初始化配置过摄像头了

可以使用相关参数设置保存在照片模式的图片,而QCamera设置的参数已输出。图片的参数是qcameraimagecapture类的setEncodingSettings函数,参数包括(图像质量,分辨率,编码器,编码等)。

QT无法将相机视频保存在窗口中,所以我在这里不会说太多。

地址:广东省广州市天河区88号   电话:400-123-4657   传真:+86-123-4567
版权所有:Copyright © 2002-2025 人生就是博d88.com 版权所有 非商用版本      ICP备案编号:粤IP**********
人生就是博d88.com