QCamera 类

QCamera 类提供了对系统相机设备的接口。 更多...

头文件 #include <QCamera>
CMakefind_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmakeQT += multimedia
实例化 Camera
继承 QObject

公共类型

枚举Error { NoError, CameraError }
枚举ExposureMode { ExposureAuto, ExposureManual, ExposurePortrait, ExposureNight, ExposureSports, …, ExposureBarcode }
枚举类Feature { ColorTemperature, ExposureCompensation, IsoSensitivity, ManualExposureTime, CustomFocusPoint, FocusDistance }
标志特征
枚举FlashMode { FlashOff, FlashOn, FlashAuto }
枚举FocusMode { FocusModeAuto, FocusModeAutoNear, FocusModeAutoFar, FocusModeHyperfocal, FocusModeInfinity, FocusModeManual }
枚举TorchMode { TorchOff, TorchOn, TorchAuto }
枚举WhiteBalanceMode { WhiteBalanceAuto, WhiteBalanceManual, WhiteBalanceSunlight, WhiteBalanceCloudy, WhiteBalanceShade, …, WhiteBalanceSunset }

属性

公共函数

QCamera(QObject *parent = nullptr)
QCamera(const QCameraDevice &cameraDevice, QObject *parent = nullptr)
QCamera(QCameraDevice::Position position, QObject *parent = nullptr)
~QCamera()
QCameraDevicecameraDevice() const
QCameraFormatcameraFormat() const
QMediaCaptureSession *captureSession() const
intcolorTemperature() const
QPointFcustomFocusPoint() const
QCamera::Errorerror() const
QStringerrorString() const
floatexposureCompensation() const
QCamera::ExposureModeexposureMode() const
floatexposureTime() const
QCamera::FlashModeflashMode() const
floatfocusDistance() const
QCamera::FocusModefocusMode() const
QPointFfocusPoint() const
boolisActive() const
boolisAvailable() const
boolisExposureModeSupported(QCamera::ExposureMode mode) const
boolisFlashModeSupported(QCamera::FlashMode mode) const
boolisFlashReady() const
boolisFocusModeSupported(QCamera::FocusMode mode) const
boolisTorchModeSupported(QCamera::TorchMode mode) const
boolisWhiteBalanceModeSupported(QCamera::WhiteBalanceMode mode) const
intisoSensitivity() const
floatmanualExposureTime() const
intmanualIsoSensitivity() const
floatmaximumExposureTime() const
intmaximumIsoSensitivity() const
floatmaximumZoomFactor() const
floatminimumExposureTime() const
intminimumIsoSensitivity() const
floatminimumZoomFactor() const
voidsetCameraDevice(const QCameraDevice &cameraDevice)
voidsetCameraFormat(const QCameraFormat &format)
voidsetCustomFocusPoint(const QPointF &point)
voidsetFocusDistance(float d)
voidsetFocusMode(QCamera::FocusMode mode)
voidsetZoomFactor(float factor)
QCamera::FeaturessupportedFeatures() const
QCamera::TorchModetorchMode() const
QCamera::WhiteBalanceModewhiteBalanceMode() const
floatzoomFactor() const

公共槽

voidsetActive(bool active)
void设置自动曝光时间()
void设置自动ISO灵敏度()
voidsetColorTemperature(int colorTemperature)
voidsetExposureCompensation(float ev)
voidsetExposureMode(QCamera::ExposureMode mode)
voidsetFlashMode(QCamera::FlashMode mode)
voidsetManualExposureTime(float seconds)
voidsetManualIsoSensitivity(int iso)
voidsetTorchMode(QCamera::TorchMode mode)
voidsetWhiteBalanceMode(QCamera::WhiteBalanceMode mode)
void开始()
void停止()
voidzoomTo(float factor, float rate)

信号

详细描述

可以将在QMediaCaptureSession中使用QCamera来视频录制和图像捕捉。

可以使用QCameraDevice列出可用的摄像头并选择使用哪个。

const QList<QCameraDevice> cameras = QMediaDevices::videoInputs();
for (const QCameraDevice &cameraDevice : cameras) {
    if (cameraDevice.description() == "mycamera")
        camera = new QCamera(cameraDevice);
}

在支持此功能的硬件上,QCamera允许您调整焦点和缩放。这还包括类似于“微距”模式的功能,用于近距离工作(例如,读取条形码或识别字母),或“触摸对焦” - 指示图像中重要的区域,以便硬件尝试对焦。

camera->setFocusPointMode(QCamera::FocusModeManual);
camera->setCustomFocusPoint(QPointF(0.25f, 0.75f)); // A point near the bottom left, 25% away from the corner, near that shiny vase

最小缩放因子()和最大缩放因子()方法提供了支持的缩放因子范围。zoomTo()方法允许更改缩放因子。

camera->setZoomFactor(3.0);

捕获摄像头帧的原始数据后,摄像头硬件和软件执行各种图像处理任务以生成最终图像。这包括对环境光颜色进行补偿,减少噪声,并对图像进行一些其他调整。

您可以通过摄像头属性控制许多这些处理步骤。例如,您可以设置用于处理图像的白平衡(或颜色温度)

camera->setWhiteBalanceMode(QCamera::WhiteBalanceFluorescent);

有关摄像头帧图像处理的更多信息,请参阅摄像头图像处理

有关更多信息,请参阅摄像头概述

成员类型文档

enum QCamera::Error

此枚举保存最后一个错误代码。

常量描述
QCamera::NoError0没有发生错误。
QCamera::CameraError1发生了错误。

enum QCamera::ExposureMode

常量描述
QCamera::ExposureAuto0自动模式。
QCamera::ExposureManual1手动模式。
QCamera::ExposurePortrait2人像曝光模式。
QCamera::ExposureNight3夜景模式。
QCamera::ExposureSports4斑点曝光模式。
QCamera::ExposureSnow5雪地曝光模式。
QCamera::ExposureBeach6海滩曝光模式。
QCamera::ExposureAction7动作模式。自5.5版本起
QCamera::ExposureLandscape8风景模式。自5.5版本起
QCamera::ExposureNightPortrait9夜景人像模式。自5.5版本起
QCamera::ExposureTheatre10舞台模式。自5.5版本起
QCamera::ExposureSunset11日落模式。自5.5版本起
QCamera::ExposureSteadyPhoto12稳像拍摄模式。自5.5版本起
QCamera::ExposureFireworks13烟花模式。自5.5版本起
QCamera::ExposureParty14派对模式。自5.5版本起
QCamera::ExposureCandlelight15烛光模式。自5.5版本起
QCamera::ExposureBarcode16条码模式。自5.5版本起

enum class QCamera::Feature
flags QCamera::Features

描述相机支持的一组功能。返回的值可以是以下值的组合

常量描述
QCamera::Feature::ColorTemperature0x1相机支持设置自定义的颜色温度。
QCamera::Feature::ExposureCompensation0x2相机支持设置自定义的曝光补偿。
QCamera::Feature::IsoSensitivity0x4相机支持设置自定义的ISO敏感度。
QCamera::Feature::ManualExposureTime0x8相机支持设置手动曝光时间。
QCamera::Feature::CustomFocusPoint0x10相机支持设置自定义的焦点。
QCamera::Feature::FocusDistance0x20相机支持设置焦点距离属性。

Features类型是QFlags的typedef。它存储了特征值的OR组合。

enum QCamera::FlashMode

常量描述
QCamera::FlashOff0闪光灯关闭。
QCamera::FlashOn1闪光灯开启。
QCamera::FlashAuto2自动闪光。

enum QCamera::FocusMode

常量描述
QCamera::FocusModeAuto0连续自动对焦模式。
QCamera::FocusModeAutoNear1近距离连续自动对焦模式。
QCamera::FocusModeAutoFar2远距离连续自动对焦模式。
QCamera::FocusModeHyperfocal3对焦到超焦点距离,获得最大景深。从这距离的一半到无穷远的所有物体都将被接受为清晰。
QCamera::FocusModeInfinity4严格对焦到无穷远。
QCamera::FocusModeManual5手动或固定对焦模式。

enum QCamera::TorchMode

常量描述
QCamera::TorchOff0手电筒关闭。
QCamera::TorchOn1手电筒开启。
QCamera::TorchAuto2自动手电筒。

enum QCamera::WhiteBalanceMode

常量描述
QCamera::WhiteBalanceAuto0自动白平衡模式。
QCamera::WhiteBalanceManual1手动白平衡。在此模式下,应使用setColorTemperature()设置白平衡
QCamera::WhiteBalanceSunlight2日光白平衡模式。
QCamera::WhiteBalanceCloudy3阴天白平衡模式。
QCamera::WhiteBalanceShade4阴影白平衡模式。
QCamera::WhiteBalanceTungsten5钨丝(白炽灯)白平衡模式。
QCamera::WhiteBalanceFluorescent6荧光灯白平衡模式。
QCamera::WhiteBalanceFlash7闪光灯白平衡模式。
QCamera::WhiteBalanceSunset8日落白平衡模式。

属性文档

active : bool

描述相机当前是否处于活动状态。

访问函数

boolisActive() const
voidsetActive(bool active)

通知信号

voidactiveChanged(bool)

cameraDevice : QCameraDevice

返回与该相机相关联的 QCameraDevice 对象。

访问函数

QCameraDevicecameraDevice() const
voidsetCameraDevice(const QCameraDevice &cameraDevice)

通知信号

void摄像头设备改变()

cameraFormat : QCameraFormat

返回相机当前使用的相机格式。

注意:当在 Android 目标设备上使用 FFMPEG 后端时,如果您请求 YUV420P 格式,您将收到完全平面的 4:2:0 YUV420P 或半平面的 NV12/NV21。这取决于设备 OEM 实现的编解码器。

访问函数

QCameraFormatcameraFormat() const
voidsetCameraFormat(const QCameraFormat &format)

通知信号

void摄像头格式改变()

另请参阅QCameraDevice::videoFormats.

colorTemperature : int

如果当前白平衡模式为 WhiteBalanceManual,则返回当前颜色温度。对于其他模式,返回值未定义。

访问函数

intcolorTemperature() const
voidsetColorTemperature(int colorTemperature)

通知信号

voidcolorTemperatureChanged() const

customFocusPoint : QPointF

此属性表示自定义焦点点的位置,以相对帧坐标为单位:QPointF(0,0) 指向左上角的帧点,QPointF(0.5,0.5) 指向帧中心。

仅在 FocusPointCustom 焦点模式中使用自定义焦点点属性。

您可以通过使用 Feature.CustomFocusPoint 标志调用 supportedFeatures() 来检查是否支持自定义焦点点。

访问函数

QPointFcustomFocusPoint() const
voidsetCustomFocusPoint(const QPointF &point)

通知信号

void自定义焦点改变()

[只读] error : const Error

返回相机的错误状态。

访问函数

QCamera::Errorerror() const

通知信号

void错误改变()

[只读] errorString : const QString

返回描述相机错误状态的文本。

访问函数

QStringerrorString() const

通知信号

void错误改变()

exposureCompensation : float

曝光补偿的单位为 EV。

曝光补偿属性允许调整自动计算的曝光。

访问函数

floatexposureCompensation() const
voidsetExposureCompensation(float ev)

通知信号

voidexposureCompensationChanged(float value)

曝光模式 : QCamera::ExposureMode

此属性持有正在使用的曝光模式。

访问函数

QCamera::ExposureModeexposureMode() const
voidsetExposureMode(QCamera::ExposureMode mode)

通知信号

void曝光模式改变()

另请参见QCamera::isExposureModeSupported

[只读] exposureTime : const float

相机的曝光时间(秒)。

访问函数

floatexposureTime() const

通知信号

voidexposureTimeChanged(float speed)

另请参见minimumExposureTime(),maximumExposureTime()和setManualExposureTime

闪光模式 : QCamera::FlashMode

此属性持有正在使用的闪光模式。

如果相机具有闪光灯,将启用特定的闪光模式。

访问函数

QCamera::FlashModeflashMode() const
voidsetFlashMode(QCamera::FlashMode mode)

通知信号

void闪光灯模式改变()

另请参见QCamera::FlashModeQCamera::isFlashModeSupportedQCamera::isFlashReady

[只读] flashReady : const bool

指示闪光灯是否充电并准备好使用。

访问函数

boolisFlashReady() const[以下说明]

注意:此函数可以通过元对象系统从QML调用。请参阅Q_INVOKABLE

通知信号

voidflashReady(bool ready)

focusDistance : float

此属性返回相机的近似对焦距离。报告的值在0到1之间,0为最接近的可能对焦距离,1为最远的可能距离。请注意,1通常是无穷远,但不一定总是。

除非将对焦模式设置为FocusModeManual,否则将对焦距离的设置将被忽略。

访问函数

floatfocusDistance() const
voidsetFocusDistance(float d)

通知信号

voidfocusDistanceChanged(float)

focusMode : FocusMode

此属性持有当前相机的对焦模式。

设置相机的不同对焦模式。所有自动对焦模式都会持续对焦。通过将焦点模式设置为FocusModeManual可以锁定焦点。这将保持当前焦点并停止任何自动对焦。

访问函数

QCamera::FocusModefocusMode() const
voidsetFocusMode(QCamera::FocusMode mode)

通知信号

另请参见isFocusModeSupported

[只读] focusPoint : const QPointF

返回自动对焦系统当前用于对焦的点。

访问函数

QPointFfocusPoint() const

通知信号

void焦点点改变()

[只读] isoSensitivity : const int

此属性存储传感器的ISO灵敏度。

描述相机当前使用的ISO灵敏度。

访问函数

intisoSensitivity() const

通知信号

voidisoSensitivityChanged(int value)

另请参阅setAutoIsoSensitivity() 和 setManualIsoSensitivity

manualExposureTime : int

设置手动曝光时间为

访问函数

floatmanualExposureTime() const
voidsetManualExposureTime(float seconds)

通知信号

voidmanualExposureTimeChanged(float speed)

manualIsoSensitivity : int

描述手动设置的ISO灵敏度

将此属性设置为 -1(默认值)表示相机自动调整ISO灵敏度。

访问函数

intmanualIsoSensitivity() const
voidsetManualIsoSensitivity(int iso)

通知信号

voidmanualIsoSensitivityChanged(int)

[只读] maximumZoomFactor : const float

返回最大缩放系数。

在不支持缩放的相机上,这将等于 1.0

访问函数

floatmaximumZoomFactor() const

通知信号

voidmaximumZoomFactorChanged(float)

[只读] minimumZoomFactor : const float

返回最小缩放系数。

在不支持缩放的相机上,这将等于 1.0

访问函数

floatminimumZoomFactor() const

通知信号

voidminimumZoomFactorChanged(float)

[只读] supportedFeatures : const Features

返回此相机支持的功能。

访问函数

QCamera::FeaturessupportedFeatures() const

通知信号

void支持的功能改变()

另请参阅QCamera::Feature

torchMode : QCamera::TorchMode

此属性包含正在使用的手电筒模式。

手电筒是连续光源。它可以在低光照条件下进行视频录制。启用手电筒模式通常会覆盖任何当前设置的闪光灯模式。

访问函数

QCamera::TorchModetorchMode() const
voidsetTorchMode(QCamera::TorchMode mode)

通知信号

voidtorchModeChanged()

另请参阅QCamera::TorchModeQCamera::isTorchModeSupportedQCamera::flashMode

whiteBalanceMode : WhiteBalanceMode

返回正在使用的白平衡模式。

访问函数

QCamera::WhiteBalanceModewhiteBalanceMode() const
voidsetWhiteBalanceMode(QCamera::WhiteBalanceMode mode)

通知信号

voidwhiteBalanceModeChanged() const

zoomFactor : float

此属性包含当前缩放系数。

获取或设置当前缩放系数。值将在 minimumZoomFactormaximumZoomFactor 之间进行限制。

访问函数

floatzoomFactor() const
voidsetZoomFactor(float factor)

通知信号

voidzoomFactorChanged(float)

成员函数文档

[明确指定] QCamera::QCamera(QObject *parent = nullptr)

使用父对象构造 QCamera。

如果系统上有多个摄像头,则选择默认摄像头。

[明确指定] QCamera::QCamera(const QCameraDevice &cameraDevice, QObject *parent = nullptr)

从摄像头描述 cameraDeviceparent 构造一个 QCamera。

[明确指定] QCamera::QCamera(QCameraDevice::Position position, QObject *parent = nullptr)

构造一个使用位于指定 position 的硬件摄像头的 QCamera。

例如,在手机上,可以轻松地在前置摄像头和后置摄像头之间进行选择。

如果在指定的 position 处没有摄像头,或者 positionQCameraDevice::UnspecifiedPosition,则使用默认摄像头。

[虚函数,noexcept] QCamera::~QCamera()

销毁摄像头对象。

QMediaCaptureSession *QCamera::captureSession() const

返回摄像头连接的捕获会话,如果没有连接到捕获会话,则返回 nullptr。

使用 QMediaCaptureSession::setCamera() 将摄像头连接到会话。

[信号] void QCamera::errorOccurred(QCamera::Error error, const QString &errorString)

当错误状态变为 error 时,发出此信号。错误描述作为 errorString 提供。

[信号] void QCamera::exposureCompensationChanged(float value)

当曝光补偿变为 value 时发出信号。

注意:属性 exposureCompensation 的通知信号。

float QCamera::exposureTime() const

返回当前的曝光时间(秒)。

注意:曝光时间属性的获取函数。

[信号] void QCamera::exposureTimeChanged(float speed)

通知摄像头的曝光 speed 已更改。

注意:曝光时间属性的更改通知信号。

[信号] void QCamera::flashReady(bool ready)

通知闪光灯 ready 状态已更改。

注意:闪光灯准备状态的更改通知信号。

[signal] void QCamera::focusModeChanged()

focusMode 发生变化时发出信号。

注意:属性 focusMode 的通知器信号。

bool QCamera::isActive() const

如果相机当前处于活动状态,则返回 true。

注意:属性 active 的获取器函数。

bool QCamera::isAvailable() const

如果可以使用相机,则返回 true。

[invokable] bool QCamera::isExposureModeSupported(QCamera::ExposureMode mode) const

如果支持曝光 mode,则返回 true。

注意:此函数可以通过元对象系统从QML调用。请参阅Q_INVOKABLE

[invokable] bool QCamera::isFlashModeSupported(QCamera::FlashMode mode) const

如果支持闪光灯 mode,则返回 true。

注意:此函数可以通过元对象系统从QML调用。请参阅Q_INVOKABLE

[invokable] bool QCamera::isFlashReady() const

如果闪光灯已充电,则返回 true。

注意:此函数可以通过元对象系统从QML调用。请参阅Q_INVOKABLE

注意:属性 flashReady 的获取器函数。

[invokable] bool QCamera::isFocusModeSupported(QCamera::FocusMode mode) const

如果相机支持对焦 mode,则返回 true。

注意:此函数可以通过元对象系统从QML调用。请参阅Q_INVOKABLE

[invokable] bool QCamera::isTorchModeSupported(QCamera::TorchMode mode) const

如果支持手电筒 mode,则返回 true。

注意:此函数可以通过元对象系统从QML调用。请参阅Q_INVOKABLE

[invokable] bool QCamera::isWhiteBalanceModeSupported(QCamera::WhiteBalanceMode mode) const

如果支持白平衡 mode,则返回 true。

注意:此函数可以通过元对象系统从QML调用。请参阅Q_INVOKABLE

[signal] void QCamera::isoSensitivityChanged(int value)

当灵敏度变为 value 时发出信号。

注意:属性 isoSensitivity 的通知器信号。

float QCamera::manualExposureTime() const

以秒为单位返回手动曝光时间,如果相机使用自动曝光时间,则返回 -1。

注意:手动曝光时间的获取器函数。

另请参阅:setManualExposureTime()。

float QCamera::maximumExposureTime() const

最大曝光时间为秒。

int QCamera::maximumIsoSensitivity() const

返回相机支持的最高 ISO 灵敏度。

float QCamera::minimumExposureTime() const

最小曝光时间为秒。

int QCamera::minimumIsoSensitivity() const

返回相机支持的最小ISO灵敏度。

[槽] void QCamera::setActive(bool active)

如果activetrue,则开启相机;如果为false,则关闭相机。

注意: 属性active的设置函数。

另请参阅 isActive().

[槽] void QCamera::setAutoExposureTime()

使用自动计算的曝光时间。

[槽] void QCamera::setAutoIsoSensitivity()

开启自动灵敏度。

void QCamera::setCameraDevice(const QCameraDevice &cameraDevice)

将相机对象连接到由cameraDevice描述的物理相机设备。使用默认构造的QCameraDevice对象作为cameraDevice将连接到系统默认相机设备。

注意: 属性cameraDevice的设置函数。

另请参阅 cameraDevice().

void QCamera::setCameraFormat(const QCameraFormat &format)

告诉相机使用由format描述的格式。这可以用来定义用于录制和图像捕获的特定分辨率和帧率。

注意:当在 Android 目标设备上使用 FFMPEG 后端时,如果您请求 YUV420P 格式,您将收到完全平面的 4:2:0 YUV420P 或半平面的 NV12/NV21。这取决于设备 OEM 实现的编解码器。

注意: 属性cameraFormat的设置函数。

另请参阅 cameraFormat().

[槽] void QCamera::setColorTemperature(int colorTemperature)

将手动白平衡设置为colorTemperature。当设置whiteBalanceMode()为WhiteBalanceManual时使用。单位是开尔文。

设置颜色的温度只有在WhiteBalanceManual被支持时才会生效。在这种情况下,设置大于0的值将自动将白平衡模式设置到WhiteBalanceManual。将温度设置为0将白平衡模式重置到WhiteBalanceAuto

注意: 属性colorTemperature的设置函数。

另请参阅 colorTemperature().

[槽] void QCamera::setWhiteBalanceMode(QCamera::WhiteBalanceMode mode)

将白平衡设置为mode

注意: 属性whiteBalanceMode的设置函数。

另请参阅 whiteBalanceMode().

void QCamera::setZoomFactor(float factor)

以每秒1倍率的倍数增加到倍率

注意:属性zoomFactor的设置函数。

另请参阅:zoomFactor

[slot] void QCamera::start()

启动相机。

等同于setActive(true)。

如果由于某些原因无法启动相机,将发出errorOccurred()信号。

[slot] void QCamera::stop()

停止相机。等同于setActive(false)。

[slot] void QCamera::zoomTo(float factor, float rate)

使用rate放大至倍率factor

rate以每秒2的幂指定。速率为1时,将需2秒从倍率1增加到4。

注意:不是所有相机都支持特定的速率。如果不受支持,将尽可能快地进行缩放。

© 2024 Qt公司。本文件中的文档贡献的版权属于各自的拥有者。本文件提供的文档是根据自由软件基金会发布的,以GNU自由文档许可证版本1.3许可的。Qt和相关的标志是芬兰及其在全世界其他国家的Qt公司的商标。所有其他商标均属于各自的拥有者。