本页内容

QCamera Class

QCamera 类为系统相机设备提供了接口。更多内容...

头文件: #include <QCamera>
CMake: find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake: QT += multimedia
在 QML 中: Camera
继承自: QObject

公共类型

enum Error { NoError, CameraError }
enum ExposureMode { ExposureAuto, ExposureManual, ExposurePortrait, ExposureNight, ExposureSports, …, ExposureBarcode }
enum class Feature { ColorTemperature, ExposureCompensation, IsoSensitivity, ManualExposureTime, CustomFocusPoint, FocusDistance }
flags Features
enum FlashMode { FlashOff, FlashOn, FlashAuto }
enum FocusMode { FocusModeAuto, FocusModeAutoNear, FocusModeAutoFar, FocusModeHyperfocal, FocusModeInfinity, FocusModeManual }
enum TorchMode { TorchOff, TorchOn, TorchAuto }
enum WhiteBalanceMode { WhiteBalanceAuto, WhiteBalanceManual, WhiteBalanceSunlight, WhiteBalanceCloudy, WhiteBalanceShade, …, WhiteBalanceSunset }

属性

公共函数

QCamera(QObject *parent = nullptr)
QCamera(QCameraDevice::Position position, QObject *parent = nullptr)
QCamera(const QCameraDevice &cameraDevice, QObject *parent = nullptr)
virtual ~QCamera() override
QCameraDevice cameraDevice() const
QCameraFormat cameraFormat() const
QMediaCaptureSession *captureSession() const
int colorTemperature() const
QPointF customFocusPoint() const
QCamera::Error error() const
QString errorString() const
float exposureCompensation() const
QCamera::ExposureMode exposureMode() const
float exposureTime() const
QCamera::FlashMode flashMode() const
float focusDistance() const
QCamera::FocusMode focusMode() const
QPointF focusPoint() const
bool isActive() const
bool isAvailable() const
bool isExposureModeSupported(QCamera::ExposureMode mode) const
bool isFlashModeSupported(QCamera::FlashMode mode) const
bool isFlashReady() const
bool isFocusModeSupported(QCamera::FocusMode mode) const
bool isTorchModeSupported(QCamera::TorchMode mode) const
bool isWhiteBalanceModeSupported(QCamera::WhiteBalanceMode mode) const
int isoSensitivity() const
float manualExposureTime() const
int manualIsoSensitivity() const
float maximumExposureTime() const
int maximumIsoSensitivity() const
float maximumZoomFactor() const
float minimumExposureTime() const
int minimumIsoSensitivity() const
float minimumZoomFactor() const
void setCameraDevice(const QCameraDevice &cameraDevice)
void setCameraFormat(const QCameraFormat &format)
void setCustomFocusPoint(const QPointF &point)
void setFocusDistance(float d)
void setFocusMode(QCamera::FocusMode mode)
void setZoomFactor(float factor)
QCamera::Features supportedFeatures() const
QCamera::TorchMode torchMode() const
QCamera::WhiteBalanceMode whiteBalanceMode() const
float zoomFactor() const

公共槽

void setActive(bool active)
void setAutoExposureTime()
void setAutoIsoSensitivity()
void setColorTemperature(int colorTemperature)
void setExposureCompensation(float ev)
void setExposureMode(QCamera::ExposureMode mode)
void setFlashMode(QCamera::FlashMode mode)
void setManualExposureTime(float seconds)
void setManualIsoSensitivity(int iso)
void setTorchMode(QCamera::TorchMode mode)
void setWhiteBalanceMode(QCamera::WhiteBalanceMode mode)
void start()
void stop()
void zoomTo(float factor, float rate)

信号

void activeChanged(bool)
void cameraDeviceChanged()
void cameraFormatChanged()
void colorTemperatureChanged() const
void customFocusPointChanged()
void errorChanged()
void errorOccurred(QCamera::Error error, const QString &errorString)
void exposureCompensationChanged(float value)
void exposureModeChanged()
void exposureTimeChanged(float speed)
void flashModeChanged()
void flashReady(bool ready)
void focusDistanceChanged(float)
void focusModeChanged()
void focusPointChanged()
void isoSensitivityChanged(int value)
void manualExposureTimeChanged(float speed)
void manualIsoSensitivityChanged(int)
void maximumZoomFactorChanged(float)
void minimumZoomFactorChanged(float)
void supportedFeaturesChanged()
void torchModeChanged()
void whiteBalanceModeChanged() const
void zoomFactorChanged(float)

详细说明

QCamera 可在QMediaCaptureSession 中用于视频录制和图像拍摄。

您可以使用QCameraDevice 列出可用的相机,并选择要使用的相机。

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

在支持该功能的硬件上,QCamera 允许您调整焦距和变焦。minimumZoomFactor 和maximumZoomFactor 属性提供了支持的变焦倍数范围。zoomFactor 属性允许更改变焦倍数。

camera->setZoomFactor(camera->maximumZoomFactor()); // zoom in as much as possible

在捕获相机帧的原始数据后,相机硬件和软件会执行各种图像处理任务以生成最终图像。这包括对环境光色的补偿、降噪,以及对图像进行其他一些调整。

您可以通过“相机”属性控制其中许多处理步骤。例如,您可以设置用于图像处理的白平衡(或色温):

camera->setWhiteBalanceMode(QCamera::WhiteBalanceManual);
camera->setColorTemperature(5600);

有关相机帧图像处理的更多信息,请参阅《相机图像处理》。

大多数平台要求最终用户授予权限后才能激活摄像头。因此,强烈建议应用程序开发人员在处理摄像头相关操作时使用QCameraPermission 类。以下是一个简短示例,该示例在应用程序启动时向最终用户请求权限,并在获得授权后激活摄像头。

qApp->requestPermission(QCameraPermission{}, [](const QPermission &permission) {
    if (permission.status() == Qt::PermissionStatus::Granted)
        camera->setActive(true);
});

有关更多信息,请参阅相机概述。

注意:在 WebAssembly 平台上,由于其异步特性,当视频输入列表准备就绪时会发出 `QMediaDevices::videoInputsChanged()` 信号。此操作需要用户授权,且仅在安全的 https 上下文中有效。

成员类型文档

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相机支持设置自定义colorTemperature 。
QCamera::Feature::ExposureCompensation0x2该相机支持设置自定义exposureCompensation 。
QCamera::Feature::IsoSensitivity0x4该相机支持设置自定义isoSensitivity 。该相机支持设置自定义 。
QCamera::Feature::ManualExposureTime0x8该相机支持设置manual exposure Time 。
QCamera::Feature::CustomFocusPoint0x10该相机支持设置custom focus point 。
QCamera::Feature::FocusDistance0x20该相机支持设置focusDistance 属性。

“Features”类型是QFlags<Feature> 的 typedef。它存储了 Feature 值的“或”组合。

enum QCamera::FlashMode

常数值描述
QCamera::FlashOff0Flash 已关闭。
QCamera::FlashOn1闪光灯已开启。
QCamera::FlashAuto2自动闪光。

enum QCamera::FocusMode

常数值描述
QCamera::FocusModeAuto0连续自动对焦模式。
QCamera::FocusModeAutoNear1对近处物体进行连续自动对焦。
QCamera::FocusModeAutoFar2对远处物体进行连续自动对焦。
QCamera::FocusModeHyperfocal3对焦至超焦距,以获得最大的景深。从该距离的一半到无穷远的所有物体都将呈现出令人满意的清晰度。
QCamera::FocusModeInfinity4严格对焦至无限远。
QCamera::FocusModeManual5相机镜头的对焦距离将根据focusDistance 进行锁定。

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

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

访问函数:

bool isActive() const
void setActive(bool active)

通知信号:

void activeChanged(bool)

cameraDevice : QCameraDevice

返回与该摄像头关联的QCameraDevice 对象。

切换摄像头设备时,QCamera 的功能会随之更新。此外,QCamera 的控制属性(例如focusMode 、flashMode 、focusDistance 、zoomFactor )也会按以下方式更新:

  • 如果新设备支持某项属性,则该属性值将应用于相机设备。
  • 如果某个属性受支持,但其有效值范围已发生变化,则该属性将被限制在新的范围内,并应用于相机设备。
  • 如果新相机设备不支持某项属性,则该属性的值将重置为默认值,且不会对相机设备进行任何更改。

访问函数:

QCameraDevice cameraDevice() const
void setCameraDevice(const QCameraDevice &cameraDevice)

通知器信号:

void cameraDeviceChanged()

cameraFormat : QCameraFormat

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

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

注意:在 macOS上 ,摄像头设备由操作系统上的多个应用程序共享。这意味着其他应用程序可能会覆盖此属性设置的格式。 应用程序开发人员应做好准备,可能会接收到分辨率、像素格式和帧率与本属性描述不一致的视频帧。当设备的格式被其他应用程序修改时,本属性不会随之改变。可通过重新激活QCamera ,将本属性描述的格式重新应用到设备上。

访问函数:

QCameraFormat cameraFormat() const
void setCameraFormat(const QCameraFormat &format)

通知信号:

void cameraFormatChanged()

另请参阅 QCameraDevice::videoFormats 。

colorTemperature : int

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

访问函数:

int colorTemperature() const
void setColorTemperature(int colorTemperature)

通知信号:

void colorTemperatureChanged() const

customFocusPoint : QPointF

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

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

访问函数:

QPointF customFocusPoint() const
void setCustomFocusPoint(const QPointF &point)

通知信号:

void customFocusPointChanged()

[read-only] error : Error

返回相机的错误状态。

访问函数:

QCamera::Error error() const

通知信号:

void errorChanged()

另请参阅 QCamera::Error 。

[read-only] errorString : QString

返回一个描述相机错误状态的人类可读字符串。

访问函数:

QString errorString() const

通知信号:

void errorChanged()

exposureCompensation : float

以EV为单位的曝光补偿。

曝光补偿功能可对自动计算出的曝光值进行调整。

访问功能:

float exposureCompensation() const
void setExposureCompensation(float ev)

通知信号:

void exposureCompensationChanged(float value)

exposureMode : QCamera::ExposureMode

该属性保存当前使用的曝光模式。

访问函数:

QCamera::ExposureMode exposureMode() const
void setExposureMode(QCamera::ExposureMode mode)

通知信号:

void exposureModeChanged()

另请参阅 QCamera::isExposureModeSupported 。

[read-only] exposureTime : float

相机的曝光时间(以秒为单位)。

访问函数:

float exposureTime() const

通知信号:

void exposureTimeChanged(float speed)

另请参阅 minimumExposureTime()、maximumExposureTime() 和setManualExposureTime()。

flashMode : QCamera::FlashMode

该属性保存当前使用的闪光灯模式。

如果相机配备闪光灯,则启用特定的闪光模式。

若将不支持的模式赋值给此属性,则不会产生任何效果。

仅在使用以下功能拍摄图像时,此属性才生效QImageCapture

访问函数:

QCamera::FlashMode flashMode() const
void setFlashMode(QCamera::FlashMode mode)

通知信号:

void flashModeChanged()

另请参阅 QCamera::FlashMode 、QCamera::isFlashModeSupported 以及QCamera::isFlashReady 。

[read-only] flashReady : bool

指示闪光灯是否已充满电且可以使用。

访问函数:

bool isFlashReady() const[see note below]

注意: 可通过元对象系统和 QML 调用此 功能。参见Q_INVOKABLE 。

通知信号:

void flashReady(bool ready)

focusDistance : float

该属性定义了相机设备在手动对焦模式下镜头的对焦距离。有效值范围为 0 到 1,其中 0 表示最近的对焦距离,1 表示最远的对焦距离。最远的对焦距离通常为无限远,但并非所有设备都如此。

仅当focusMode 设置为FocusModeManual ,且supportedFeatures 包含Feature::FocusDistance 标志时,此属性才对设备生效。

如果在focusMode 未设置为QCamera::FocusModeManual 的情况下为该属性赋值,该属性会存储该值,但在QCamera::FocusModeManual 生效之前不会对设备产生影响。

在有效范围 [0, 1] 之外赋值对该属性无效。

如果supportedFeatures 不包含FocusDistance 标志,则任何设置此属性的尝试都将被忽略。

当相机处于自动对焦模式时,此属性不会被更新。

默认值为 1。

访问函数:

float focusDistance() const
void setFocusDistance(float d)

通知信号:

void focusDistanceChanged(float)

focusMode : FocusMode

该属性存储当前相机的对焦模式。

该属性存储控制相机设备对焦模式的值。在所有自动对焦模式下,相机设备都会持续进行对焦。

要检查相机设备是否支持特定的对焦模式,请将相应的FocusMode 值作为参数传递给isFocusModeSupported 函数。如果该对焦模式值不受支持,该函数将返回false。将不受支持的模式赋值给此属性将不起作用。

若将 focusMode 属性设置为QCamera::FocusModeManual ,镜头将根据focusDistance 锁定对焦。

访问函数:

QCamera::FocusMode focusMode() const
void setFocusMode(QCamera::FocusMode mode)

通知信号:

另请参阅 isFocusModeSupported()。

[read-only] focusPoint : QPointF

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

访问函数:

QPointF focusPoint() const

通知信号:

void focusPointChanged()

[read-only] isoSensitivity : int

该属性存储传感器的 ISO 感光度。

描述相机当前使用的ISO感光度。

访问函数:

int isoSensitivity() const

通知信号:

void isoSensitivityChanged(int value)

另请参阅 setAutoIsoSensitivity() 和setManualIsoSensitivity()。

manualExposureTime : float

将手动曝光时间设置为seconds

访问功能:

float manualExposureTime() const
void setManualExposureTime(float seconds)

通知信号:

void manualExposureTimeChanged(float speed)

manualIsoSensitivity : int

描述手动设置的ISO感光度

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

访问函数:

int manualIsoSensitivity() const
void setManualIsoSensitivity(int iso)

通知信号:

void manualIsoSensitivityChanged(int)

[read-only] maximumZoomFactor : float

返回最大变焦倍数。

在不支持变焦的相机上,该值将为1.0 。

访问函数:

float maximumZoomFactor() const

通知信号:

void maximumZoomFactorChanged(float)

[read-only] minimumZoomFactor : float

返回最小变焦倍数。

在不支持变焦的相机上,该值将为1.0 。

访问函数:

float minimumZoomFactor() const

通知信号:

void minimumZoomFactorChanged(float)

[read-only] supportedFeatures : Features

返回该相机支持的功能。

访问函数:

QCamera::Features supportedFeatures() const

通知信号:

void supportedFeaturesChanged()

另请参阅 QCamera::Feature 。

torchMode : QCamera::TorchMode

该属性保存当前使用的手电筒模式。

手电筒是一种持续发光光源。在光线较暗的环境下进行视频录制时可以使用。启用手电筒模式通常会覆盖当前设置的任何闪光灯模式。

访问函数:

QCamera::TorchMode torchMode() const
void setTorchMode(QCamera::TorchMode mode)

通知信号:

void torchModeChanged()

另请参阅 QCamera::TorchMode 、QCamera::isTorchModeSupported 以及QCamera::flashMode 。

whiteBalanceMode : WhiteBalanceMode

返回当前使用的白平衡模式。

访问函数:

QCamera::WhiteBalanceMode whiteBalanceMode() const
void setWhiteBalanceMode(QCamera::WhiteBalanceMode mode)

通知信号:

void whiteBalanceModeChanged() const

zoomFactor : float

该属性保存当前的缩放因子。

获取或设置当前缩放因子。值将在minimumZoomFactor 和maximumZoomFactor 之间进行裁剪。

访问函数:

float zoomFactor() const
void setZoomFactor(float factor)

通知信号:

void zoomFactorChanged(float)

成员函数文档

[explicit] QCamera::QCamera(QObject *parent = nullptr)

使用parent 实例化一个QCamera。

如果系统中有多台摄像头,则选择系统默认的摄像头。

[explicit] QCamera::QCamera(QCameraDevice::Position position, QObject *parent = nullptr)

创建一个 QCamera,该对象使用位于指定位置position 的硬件摄像头。

例如,在手机上,它可用于轻松在前置摄像头和后置摄像头之间进行切换。

如果指定position 上没有可用摄像头,或者position 的值为QCameraDevice::UnspecifiedPosition ,则使用默认摄像头。

[explicit] QCamera::QCamera(const QCameraDevice &cameraDevice, QObject *parent = nullptr)

根据相机描述cameraDevice 和parent 构建一个 QCamera 对象。

[override virtual noexcept] QCamera::~QCamera()

销毁相机对象。

QMediaCaptureSession *QCamera::captureSession() const

返回该摄像头所连接的捕获会话;如果摄像头未连接到任何捕获会话,则返回 nullptr。

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

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

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

[signal] void QCamera::exposureCompensationChanged(float value)

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

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

float QCamera::exposureTime() const

返回当前曝光时间(单位:秒)。

注意: 这是属性 exposureTime 的获取器 函数。

[signal] void QCamera::exposureTimeChanged(float speed)

表示相机的曝光量speed 已发生变化。

注意: 这是属性exposureTime的通知 信号。

[signal] void QCamera::flashReady(bool ready)

指示闪存ready 的状态已发生变化。

注意: 这是属性 flashReady 的通知 信号。

[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

如果支持 Flashmode ,则返回 true。

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

[invokable] bool QCamera::isFlashReady() const

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

注意: 可通过元对象系统和 QML 调用此 函数。参见Q_INVOKABLE 。

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

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

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

如果报告支持FocusModeManual ,则默认也支持Feature::FocusDistance 功能。

注意: 可以通过元对象系统和 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。

注意: 这是 manualExposureTime 属性的获取 函数。

另请参阅 ` setManualExposureTime()`。

float QCamera::maximumExposureTime() const

最大曝光时间(单位:秒)。

int QCamera::maximumIsoSensitivity() const

返回相机支持的最高 ISO 感光度。

float QCamera::minimumExposureTime() const

以秒为单位的最小曝光时间。

int QCamera::minimumIsoSensitivity() const

返回相机支持的最低 ISO 感光度。

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

如果active 的值为true ,则开启摄像头;如果值为false ,则关闭摄像头。

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

另请参阅 isActive()。

[slot] void QCamera::setAutoExposureTime()

使用自动计算的曝光时间

[slot] void QCamera::setAutoIsoSensitivity()

开启自动灵敏度

void QCamera::setCameraDevice(const QCameraDevice &cameraDevice)

将相机对象与由cameraDevice 描述的物理相机设备连接起来。将默认构造的QCameraDevice 对象用作cameraDevice ,将把相机连接到系统默认的相机设备。

切换相机设备时,QCamera 的功能将随之更新。此外,QCamera 的控制属性(例如focusMode 、flashMode 、focusDistance 、zoomFactor )将按以下方式更新:

  • 如果新设备支持某项属性,则该属性值将应用于相机设备。
  • 如果某个属性受支持,但其有效值范围已发生变化,则该属性将被限制在新的范围之内,并应用于相机设备。
  • 如果新相机设备不支持某属性,则该属性值将重置为默认值,且不会对相机设备进行任何更改。

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

另请参阅 cameraDevice()。

void QCamera::setCameraFormat(const QCameraFormat &format)

指示相机使用format 中描述的格式。这可用于定义录制和图像捕获时使用的特定分辨率和帧率。

注意:在 Android 目标设备上使用 FFMPEG 后端时,若 请求YUV420P格式,将返回全平面 4:2:0 YUV420P 或半平面 NV12/NV21 格式。具体返回结果取决于设备 OEM 实现的编解码器。

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

另请参阅 cameraFormat()。

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

将手动白平衡设置为colorTemperature 。当whiteBalanceMode()被设置为WhiteBalanceManual 时,此选项生效。单位为开尔文。

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

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

另请参阅 colorTemperature()。

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

将白平衡设置为mode 。

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

另请参阅 whiteBalanceMode()。

void QCamera::setZoomFactor(float factor)

以每秒1个缩放因子的速率,将视图缩放至缩放因子factor 。

注意: 这是属性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时,从缩放因子1变为4需要2秒。

注意: 并非所有相机都支持使用 特定速率。如果不支持,变焦将以尽可能快的速度进行。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.