demo中主要涉及的Qt类有:相机类QCamera,取景器类QCameraViewfinder,图像捕获类QCameraImageCapture,因此添加模块multimedia multimediawidgets。
QT += core gui multimedia multimediawidgets
在widget.h中添加相关类声明:
class QCamera;
class QCameraViewfinder;
class QCameraImageCapture;
class QCameraInfo;
class QCameraViewfinderSettings;
在类Widget中添加私有变量:
QCamera *camera; //相机
QCameraViewfinder *viewfinder; //取景器
QCameraImageCapture *imageCapture; //图像捕获
QList<QCameraInfo> cameras; //相机列表
QList<QSize> mResSize = {
}; //分辨率列表
在widget.cpp中添加头文件:
#include <QCamera>
#include <QCameraInfo>
#include <QCameraViewfinder>
#include <QCameraImageCapture>
#include <QFileDialog>
#include <QList>
#include <QDebug>
在widget.cpp的构造函数中添加代码:
先设置下窗口名称及大小
setWindowTitle("Camera");
setFixedSize(600,400);
接着获取所有相机列表并选择一个相机初始化
cameras = QCameraInfo::availableCameras(); //获取所有相机的列表
//qDebug() << "this is camera: ";
if (cameras.count() > 0) {
for(const QCameraInfo &cameraInfo:cameras) {
qDebug() << cameraInfo.description();
}
camera = new QCamera(cameras.at(0)); //初始化实例化一个相机对象
}
实例化取景器类,取景器本质是一个窗口类,若不将当前窗口设为父对象,则可以另起一个窗口显示。将当前窗口设为父对象后,视频画面便在当前窗口显示。
//设置取景器
viewfinder = new QCameraViewfinder(this);
camera->setViewfinder(viewfinder);
viewfinder->resize(600,350); //设置取景器显示大小
//viewfinder->show();
实例化一个图像捕获类,并开启相机
imageCapture = new QCameraImageCapture(camera);
camera->start(); //开启相机
设置默认摄像头的分辨率及帧率。注意:帧率一定要与摄像头匹配,否则不会显示画面。
//设置默认摄像头参数
QCameraViewfinderSettings set;
set.setResolution(640, 480); //设置显示分辨率
set.setMaximumFrameRate(25); //设置帧率
camera->setViewfinderSettings(set);
设置两个下拉框部件的初始化
//添加初始化的相机选项
for(const QCameraInfo &cameraInfo:cameras) {
qDebug() << "CameraInfo:" << cameraInfo;
ui->cameraSel->addItem(cameraInfo.description());
}
ui->cameraSel->

本文介绍如何使用Qt多媒体模块创建一个简单的相机应用程序,包括相机选择、分辨率设置和图像捕获等功能。

3195

被折叠的 条评论
为什么被折叠?



