本页内容

Camera QML Type

用于设置与对焦和变焦相关的相机参数的界面。更多...

Import Statement: import QtMultimedia
In C++: QCamera

属性

信号

方法

详细说明

可在CaptureSession 中使用Camera元素进行视频录制和拍照。

您可以使用MediaDevices 列出可用的摄像头,并选择要使用的摄像头。

MediaDevices {
    id: mediaDevices
}
CaptureSession {
    camera: Camera {
        cameraDevice: mediaDevices.defaultVideoInput
    }
}

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

Camera {
    zoomFactor: maximumZoomFactor // zoom in as much as possible
}

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

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

Camera {
    whiteBalanceMode: Camera.WhiteBalanceManual
    colorTemperature: 5600
}

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

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

CameraPermission {
    id: cameraPermission
}

Camera {
    active: cameraPermission.status === Qt.PermissionStatus.Granted
}

Component.onCompleted: cameraPermission.request()

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

属性文档

active : bool

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

cameraDevice : cameraDevice

获取或设置当前活动的摄像头设备。

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

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

cameraFormat : cameraFormat

获取或设置当前活动的摄像头格式。

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

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

另请参阅 cameraDevice::videoFormats 。

colorTemperature : int

获取或设置当前色温。

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

customFocusPoint : point

该属性存储自定义焦点点的坐标,单位为相对帧坐标。这意味着QPointF(0,0) 指向帧的左上角,而QPointF(0.5,0.5) 指向帧的中心。

您可以通过向 supportedFeatures() 方法查询并指定 Feature.CustomFocusPoint 标志,来检查是否支持自定义焦点。

error : enumeration [read-only]

返回相机的错误状态。

常量描述
Camera.NoError未发生任何错误。
Camera.CameraError发生了错误。

errorString : string [read-only]

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

exposureCompensation : real

获取或设置以EV为单位的曝光补偿。

“曝光补偿”属性可用于调整系统自动计算出的曝光值。

exposureMode : enumeration

当前使用的曝光模式。

恒定说明
Camera.ExposureAuto自动模式。
Camera.ExposureManual手动模式。
Camera.ExposurePortrait人像曝光模式。
Camera.ExposureNight夜景模式。
Camera.ExposureSports点测光模式。
Camera.ExposureSnow雪景曝光模式。
Camera.ExposureBeach海滩曝光模式。
Camera.ExposureAction动作模式。自 5.5 起
Camera.ExposureLandscape风景模式。自 5.5 起
Camera.ExposureNightPortrait夜间人像模式。自5.5版起
Camera.ExposureTheatre剧院模式。自 5.5 起
Camera.ExposureSunset日落模式。自 5.5 起
Camera.ExposureSteadyPhoto防抖模式。自 5.5 起
Camera.ExposureFireworks烟花模式。自 5.5 版起
Camera.ExposureParty派对模式。自5.5版本起
Camera.ExposureCandlelight烛光模式。自 5.5 起
Camera.ExposureBarcode条形码模式。自 5.5 起

另请参阅 isExposureModeSupported()。

exposureTime : real [read-only]

返回相机的曝光时间(单位:秒)。

另请参阅 manualExposureTime 。

flashMode : enumeration

如果相机配备闪光灯,则用于获取或设置特定的闪光模式。

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

仅当使用ImageCapture

Constant描述
Camera.FlashOff闪光灯关闭。
Camera.FlashOn闪光灯开启。
Camera.FlashAuto自动闪光。

另请参阅 isFlashModeSupported()、isFlashReady() 和flashReady 。

flashReady : bool [read-only]

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

focusDistance : real

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

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

如果在focusMode 未设置为Camera.FocusModeManual 时为该属性赋值,该属性会存储该值,但在Camera.FocusModeManual 生效之前不会影响设备。

赋值超出有效范围 [0, 1] 不会对该属性产生任何影响。

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

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

默认值为 1。

focusMode : enumeration

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

注意:在 自动对焦模式下 (且系统支持的情况下),focusPoint 属性可提供有关当前对焦图像区域的信息并对其进行控制。

常量描述
Camera.FocusModeAuto连续自动对焦模式。
Camera.FocusModeAutoNear连续自动对焦,优先对焦于靠近摄像头的物体。
Camera.FocusModeAutoFar连续自动对焦,优先对焦远离相机的物体。
Camera.FocusModeHyperfocal对焦至超焦距,以获得最大的景深。从该距离的一半到无限远的所有物体都将保持令人满意的清晰度。
Camera.FocusModeInfinity严格对焦至无限远。
Camera.FocusModeManual镜头对焦距离设置为由focusDistance 指定的值。

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

如果将focusMode属性设置为Camera.FocusModeManual ,镜头将根据focusDistance 锁定对焦。

另请参阅 isFocusModeSupported()。

focusPoint : point [read-only]

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

isoSensitivity : int [read-only]

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

manualExposureTime : real

获取或设置手动曝光时间。

将此属性设置为 -1(默认值)表示相机将自动确定曝光时间。

manualIsoSensitivity : int

描述手动设置的ISO感光度

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

maximumZoomFactor : real [read-only]

该属性存储了支持的最大变焦倍数。

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

minimumZoomFactor : real [read-only]

该属性存储系统支持的最小缩放倍数。

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

supportedFeatures : enumeration [read-only]

返回该相机支持的功能。该值为位掩码,可能包含以下任一标志。它存储了功能值的“或”组合。

常量描述
Camera.ColorTemperature该相机支持设置自定义colorTemperature 。
Camera.ExposureCompensation该相机支持设置自定义exposureCompensation 。
Camera.IsoSensitivity该相机支持设置自定义isoSensitivity 。
Camera.ManualExposureTime该相机支持设置manual exposure Time 。
Camera.CustomFocusPoint该相机支持设置custom focus point 。
Camera.FocusDistance该相机支持设置focusDistance 属性。

torchMode : enumeration

获取或设置当前使用的手电筒模式。

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

恒定描述
Camera.TorchOff手电筒已关闭。
Camera.TorchOn手电筒已开启。
Camera.TorchAuto自动手电筒。

另请参阅 isTorchModeSupported() 和flashMode 。

whiteBalanceMode : enumeration

获取或设置当前使用的白平衡模式。

常量描述
Camera.WhiteBalanceAuto自动白平衡模式。
Camera.WhiteBalanceManual手动白平衡。在此模式下,应使用 setColorTemperature() 设置白平衡。
Camera.WhiteBalanceSunlight日光白平衡模式。
Camera.WhiteBalanceCloudy阴天白平衡模式。
Camera.WhiteBalanceShade阴影白平衡模式。
Camera.WhiteBalanceTungsten钨丝灯(白炽灯)白平衡模式。
Camera.WhiteBalanceFluorescent荧光灯白平衡模式。
Camera.WhiteBalanceFlash闪光灯白平衡模式。
Camera.WhiteBalanceSunset日落白平衡模式。

另请参阅 isWhiteBalanceModeSupported()。

zoomFactor : real

获取或设置当前缩放倍数。数值将在minimumZoomFactor 和maximumZoomFactor 之间进行限制。

信号文档

void errorOccurred(Camera::Error error, string errorString)

当错误状态变为error 时,会发出此信号。错误描述以errorString 的形式提供。

注意: 相应的处理程序 为onErrorOccurred 。

方法文档

bool isExposureModeSupported(ExposureMode mode)

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

bool isFlashModeSupported(FlashMode mode)

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

bool isFlashReady()

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

bool isFocusModeSupported(FocusMode mode)

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

如果报告称支持Camera.FocusModeManual ,则默认也支持Camera.FocusDistance 功能。

bool isTorchModeSupported(TorchMode mode)

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

bool isWhiteBalanceModeSupported(WhiteBalanceMode mode)

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

void start()

启动相机。

这与将 active 属性设置为 true 效果相同。

如果因某种原因无法启动摄像机,则会发出errorOccurred()信号。

void stop()

停止摄像头。这与将 active 属性设置为 false 效果相同。

void zoomTo(factor, 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.