
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无法将相机视频保存在窗口中,所以我在这里不会说太多。