点击上方“Qt学视觉”,选择“星标”公众号重磅干货,第一时间送达
共同学习共同进步
1、摄像头控制概述
Qt多媒体模块为摄像头控制提供了几个类,可以用于获取摄像头设备信息,通过摄像头进行拍照和录像。
(1) 摄像头设备信息类QCameralnfo。
QCameralnfo用于获取系统的摄像头设备信息,有两个静态函数获取摄像头设备:
• QList<QCameralnfo> availableCameras(),返回 QCameralnfo 类的列表,表不系统可用的摄像头设备列表;
• QCameralnfo defaultCamera(),返回系统缺省的摄像头设备信息。
QCameralnfo有几个函数表示摄像头信息:
• QString description(),返回摄像头设备描述:
• QString deviceName(),返回摄像头设备名称;
• QCamera::Position position(),返回摄像头的位置,如手机设备上一般有两个摄像头,
前置摄像头位置类型为QCamera::FrontFace,
后置摄像头位置类型为QCamera::BackFace,
未指定位置的是 QCamera::UnspecifiedPosition
(2) 摄像头控制类QCamera。
QCamera是用于控制摄像头的类,创建QCamera对象时需传递一个QCameralnfo对象作为参数,QCamera主要的功能函数包括以下几个。
• setViewfinder(),为摄像头指定一个 QVideoWidget 或 QGraphicsVideoItem 对象作为取景器, 用于摄像头图像预览。
• QCameraExposure *exposure(),返回用于曝光控制的对象。
• QCameraFocus *focus(),返回用于聚焦控制的对象。
• setCaptureMode(QCamera::CaptureModes mode),用于设置摄像头处于不同的工作模式, QCamera::CaptureModes枚举类型的取值有:
QCamera: :CaptureViewfinder,取景器模式:
QCamera::CaptureStillImage,抓取静态图片模式:
QCamera::CaptureVideo,视频录制模式。
• bool isCaptureModeSupported(CaptureModes mode),判断摄像头是否支持某种抓取模式。
(3) 静态图片抓取类 QCameralmageCapture。
QCameralmageCapture用于控制摄像头进行静态图片的抓取 (4) 视频和音频录制类QMediaRecorder。
QMediaRecorder通过摄像头和音频输入设备进行录像。
注意使用 Qt多媒体模块的摄像头相关类无法在 Windows平台上进行视频录制,只能进行静态图片抓取, 但是在 Linux平台上可以实现静态图片抓取和视频录制。
代码如下:
#pragma once#include #include #include "QMyVideoWidget.h"QT_CHARTS_USE_NAMESPACE#include "ui_QGuiMultimedia.h"#include #include #include #include #include #include #include #include #include "QMyDisplayDevice.h"#include #include #include #include #include class QGuiMultimedia : public QWidget{
Q_OBJECTpublic: QGuiMultimedia(QWidget *parent = Q_NULLPTR); ~QGuiMultimedia();p