相机
文章目录
可以使用QCameraInfo查询系统当前的可用相机设备。
deviceName()可以返回设备的ID,可读性差,可以使用description()返回相机的描述。
orientation()获取相机的旋转角度(移动设备)。
相机状态改变时会发射statusChanged()信号。
QCamera的不同状态
常量 | 描述 |
---|---|
QCamera::ActiveStatus | 相机开始采集数据 |
QCamera::StartingStatus | 相机正在启动 |
QCamera::StoppingStatus | 相机正在停止 |
QCamera::StandbyStatus | 待机状态 |
QCamera::LoadedStatus | 加载完成,可以进行设置 |
QCamera::LoadingStatus | 相机正在加载 |
QCamera::Unloading | 相机正在被卸载 |
QCamera::UnloadedStatus | 相机没有被加载 |
QCamera::UnavailableStatus | 相机后端不可用 |
QCameraImageCapture是一个图像录制类,可用于拍照。拍照前可以使用setEncodingSettings()来进行编码设置,capture()捕获图像。
QMediaRecorder()类用来记录媒体内容。
调用本地相机,进行拍照的小例子:
#include "widget.h"
#include "ui_widget.h"
#include <QCameraInfo>
#include <QCameraViewfinder>
#include <QCameraImageCapture>
#include <QFileDialog>
#include <QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QList<QCameraInfo> cameras = QCameraInfo::availableCameras();
if(cameras.count() > 0) {
foreach (const QCameraInfo &cameraInfo, cameras) {
qDebug() << cameraInfo.description();
}
camera = new QCamera(cameras.at(0));
}
viewfinder = new QCameraViewfinder(this);
camera->setViewfinder(viewfinder);
viewfinder->resize(600, 350);
imageCapture = new QCameraImageCapture(camera);
camera->start();
}
Widget::~Widget()
{
delete ui;
}
// 拍照按钮
void Widget::on_pushButton_clicked()
{
camera->setCaptureMode(QCamera::CaptureStillImage);
QString fileName = QFileDialog::getSaveFileName();
camera->searchAndLock();
// 必须使用绝对路径
imageCapture->capture(fileName);
camera->unlock();
}
此外在硬件允许的情况下(手机平台)可以设置曝光、对焦等
QCamera::imageProcessing可以返回相机图像处理控制对象,QCameraImageProcessing类提供了与图像处理相关的相机设置接口。