在本页

Camera QML Type

与对焦和变焦相关的相机设置界面。更多

Import Statement: import QtMultimedia
In C++: QCamera

属性

信号

方法

详细说明

摄像头元素可在CaptureSession 中用于视频录制和图像拍摄。

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

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

在支持该功能的硬件上,Camera 可让您调整焦距和变焦。minimumZoomFactormaximumZoomFactor 属性提供了支持的变焦系数范围。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

获取或设置当前激活的摄像机格式。

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

注意: 在 macOS 上,摄像头设备在操作系统的多个应用程序中共享。这意味着其他应用程序可能会覆盖此属性设置的格式。应用程序开发人员应考虑到接收的视频帧的分辨率、像素格式和帧速率与此属性所描述的不同。当设备的格式被其他应用程序修改时,此属性不会改变。该属性描述的格式可通过重新激活Camera 重新应用于设备。

另请参阅 cameraDevice::videoFormats

colorTemperature : int

获取或设置当前色温。

只有在支持白平衡手动模式的情况下,设置色温才会有效果。在这种情况下,设置一个大于 0 的色温会自动将白平衡模式设置为 "白平衡手动"。将色温设置为 0 会将白平衡模式重置为 "白平衡自动"。

customFocusPoint : point

该属性以相对框架坐标表示自定义焦点的位置。这意味着QPointF(0,0) 指向框架的左上角,而QPointF(0.5,0.5) 指向框架的中心。

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

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

常量说明
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]

返回此摄像机支持的功能。该值是位掩码,可能包含以下任意标志。它存储特征值的 OR 组合。

常量说明
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

获取或设置当前缩放系数。数值将在minimumZoomFactormaximumZoomFactor 之间箝位。

信号文档

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.