- Qt 6.8
- Qt Multimedia
- QML Types
- Camera
- Qt 6.8.1 Reference Documentation

# Camera QML Type

An interface for camera settings related to focus and zoom. More...

Import Statement: | `import QtMultimedia`
In C++: | QCamera

- List of all members, including inherited members

## Properties

- active : bool
- cameraDevice : cameraDevice
- cameraFormat : cameraFormat
- customFocusPoint : point
- error : enumeration
- errorString : string
- exposureCompensation : real
- exposureMode : ExposureMode
- exposureTime : float
- flashMode : enumeration
- flashReady : bool
- focusDistance : float
- focusMode : enumeration
- focusPoint : point
- isoSensitivity : int
- manualExposureTime : real
- manualIsoSensitivity : int
- maximumZoomFactor : real
- minimumZoomFactor : real
- supportedFeatures : Features
- torchMode : Camera::TorchMode
- whiteBalanceMode : WhiteBalanceMode
- zoomFactor : real

## Signals

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

## Methods

- colorTemperature()
- bool isExposureModeSupported(ExposureMode mode)
- bool isFlashModeSupported(FlashMode mode)
- bool isFlashReady()
- bool isFocusModeSupported(FocusMode mode)
- bool isTorchModeSupported(TorchMode mode)
- bool isWhiteBalanceModeSupported(WhiteBalanceMode mode)
- void start()
- void stop()
- void zoomTo(factor, rate)

## Detailed Description

The Camera element can be used within a CaptureSession for video recording and image taking.

You can use MediaDevices to list available cameras and choose which one to use.

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

On hardware that supports it, QCamera lets you adjust the focus and zoom. This also includes functionality such as a "Macro" mode for close up work (e.g. reading barcodes, or recognizing letters), or "touch to focus" - indicating an interesting area of the image for the hardware to attempt to focus on.

     Item {
         width: 640
         height: 360

         CaptureSession {
             camera: Camera {
                 id: camera

                 focusMode: Camera.FocusModeAutoNear
                 customFocusPoint: Qt.point(0.2, 0.2) // Focus relative to top-left corner
             }
             videoOutput: videoOutput
         }

         VideoOutput {
             id: videoOutput
             anchors.fill: parent
         }
     }

The minimumZoomFactor and maximumZoomFactor properties provide the range of supported zoom factors. The zoomFactor property allows changing the zoom factor.

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

After capturing the raw data for a camera frame, the camera hardware and software performs various image processing tasks to produce the final image. This includes compensating for ambient light color, reducing noise, as well as making some other adjustments to the image.

You can control many of these processing steps through the Camera properties. For example, you can set the white balance (or color temperature) used for processing images:

     Camera {
         whiteBalanceMode: Camera.WhiteBalanceManual
         colorTemperature: 5600
     }

For more information on image processing of camera frames, see Camera Image Processing.

See the camera overview for more information.

## Property Documentation

active : bool

Describes whether the camera is currently active.

cameraDevice : cameraDevice

Gets or sets the currently active camera device.

When switching camera devices, the QCamera's capabilities are updated. Additionally, the QCamera's control properties (such as focusMode, flashMode, focusDistance, zoomFactor) are updated as follows:

- If a property is supported on the new device, the property value is applied to the camera device.
- If a property is supported but its range of valid values was changed, the property is clamped to the new range and applied to the camera device.
- If the new camera device does not support a property, the property value is reset to default, and no changes are made to the camera device.

cameraFormat : cameraFormat

Gets or sets the currently active camera format.

Note: When using the FFMPEG backend on an Android target device if you request YUV420P format, you will receive either a fully planar 4:2:0 YUV420P or a semi-planar NV12/NV21. This depends on the codec implemented by the device OEM.

See also cameraDevice::videoFormats.

customFocusPoint : point

This property holds the position of custom focus point, in relative frame coordinates. This means that QPointF(0,0) points to the top-left corner of the frame, and QPointF(0.5,0.5) points to the center of the frame.

Custom focus point is used only in `FocusPointCustom` focus mode.

You can check whether custom focus points are supported by querying supportedFeatures() with the Feature.CustomFocusPoint flag.

error : enumeration `[read-only]`

Returns the error state of the camera.

See also QCamera::Error.

errorString : string `[read-only]`

Returns a human readable string describing a camera's error state.

exposureCompensation : real

Gets or sets the exposure compensation in EV units.

Exposure compensation property allows to adjust the automatically calculated exposure.

exposureMode : ExposureMode

The exposure mode being used.

See also QCamera::ExposureMode and Camera::isExposureModeSupported().

exposureTime : float `[read-only]`

Returns the Camera's exposure time in seconds.

See also manualExposureTime.

flashMode : enumeration

Gets or sets a certain flash mode if the camera has a flash.

Constant | Description
--- | ---
`Camera.FlashOff` | Flash is Off.
`Camera.FlashOn` | Flash is On.
`Camera.FlashAuto` | Automatic flash.

See also isFlashModeSupported and isFlashReady.

flashReady : bool `[read-only]`

Indicates if the flash is charged and ready to use.

focusDistance : float

This property defines the lens focus distance when the camera device works in manual focus mode. Valid values range from 0 to 1, where 0 is the closest possible focus distance, and 1 is the farthest. The farthest point is typically at infinity, but this may not be the case for all devices.

This property is applied to the device only when focusMode is set to Camera.FocusModeManual, and supportedFeatures includes the Camera.FocusDistance flag.

If you assign a value to this property while focusMode is not set to Camera.FocusModeManual, the property stores the value but does not affect the device until Camera.FocusModeManual is active.

Assigning a value outside the valid range [0, 1] has no effect on this property.

If supportedFeatures does not include the Camera.FocusDistance flag, any attempt to set this property is ignored.

This property will not be updated by the camera when it is in an automatic focus mode.

The default value is 1.

focusMode : enumeration

This property holds the value that controls focus mode for the camera device. In all autofocus modes, the camera device keeps focusing continuously.

Note: In automatic focusing modes and where supported, the focusPoint property provides information and control over the area of the image that is being focused.

Constant | Description
--- | ---
`Camera.FocusModeAuto` | Continuous auto focus mode.
`Camera.FocusModeAutoNear` | Continuous auto focus, preferring objects near to the camera.
`Camera.FocusModeAutoFar` | Continuous auto focus, preferring objects far away from the camera.
`Camera.FocusModeHyperfocal` | Focus to hyperfocal distance, with the maximum depth of field achieved. All objects at distances from half of this distance out to infinity will be acceptably sharp.
`Camera.FocusModeInfinity` | Focus strictly to infinity.
`Camera.FocusModeManual` | The lens focus distance is set to a value specified by focusDistance.

To check whether the camera device supports a particular focus mode, pass the corresponding FocusMode value to the isFocusModeSupported function as a parameter. The function returns false if the focus mode value is not supported. Assigning this mode to the focusMode property has no effect.

If you set the focusMode property to Camera.FocusModeManual, the lens locks to the focus according to focusDistance.

See also isFocusModeSupported.

focusPoint : point `[read-only]`

Returns the point currently used by the auto focus system to focus onto.

isoSensitivity : int `[read-only]`

Describes the ISO sensitivity currently used by the camera.

manualExposureTime : real

Gets or sets a manual exposure time.

Setting this property to -1 (the default) means that the camera automatically determines the exposure time.

manualIsoSensitivity : int

Describes a manually set ISO sensitivity

Setting this property to -1 (the default), implies that the camera automatically adjusts the ISO sensitivity.

maximumZoomFactor : real `[read-only]`

This property holds the maximum zoom factor supported.

This will be `1.0` on cameras that do not support zooming.

minimumZoomFactor : real `[read-only]`

This property holds the minimum zoom factor supported.

This will be `1.0` on cameras that do not support zooming.

supportedFeatures : Features `[read-only]`

Returns the features supported by this camera.

See also QCamera::Feature.

torchMode : Camera::TorchMode

Gets or sets the torch mode being used.

A torch is a continuous source of light. It can be used during video recording in low light conditions. Enabling torch mode will usually override any currently set flash mode.

See also QCamera::TorchMode, Camera::isTorchModeSupported(), and Camera::flashMode.

whiteBalanceMode : WhiteBalanceMode

Gets or sets the white balance mode being used.

See also QCamera::WhiteBalanceMode.

zoomFactor : real

Gets or sets the current zoom factor. Values will be clamped between minimumZoomFactor and maximumZoomFactor.

## Signal Documentation

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

This signal is emitted when error state changes to error. A description of the error is provided as errorString.

Note: The corresponding handler is `onErrorOccurred`.

## Method Documentation

colorTemperature()

Gets or sets the current color temperature.

Setting a color temperature will only have an effect if WhiteBalanceManual is supported. In this case, setting a temperature greater 0 will automatically set the white balance mode to WhiteBalanceManual. Setting the temperature to 0 will reset the white balance mode to WhiteBalanceAuto.

bool isExposureModeSupported(ExposureMode mode)

Returns true if the exposure mode is supported.

bool isFlashModeSupported(FlashMode mode)

Returns true if the flash mode is supported.

bool isFlashReady()

Returns true if flash is charged.

bool isFocusModeSupported(FocusMode mode)

Returns true if the focus mode is supported by the camera.

If FocusModeManual is reported as supported, the feature Feature::FocusDistance is implied to be supported as well.

bool isTorchModeSupported(TorchMode mode)

Returns true if the torch mode is supported.

bool isWhiteBalanceModeSupported(WhiteBalanceMode mode)

Returns true if the white balance mode is supported.

void start()

Starts the camera.

Same as setting the active property to true.

If the camera can't be started for some reason, the errorOccurred() signal is emitted.

void stop()

Stops the camera. Same as setting the active property to false.

void zoomTo(factor, rate)

Zooms to a zoom factor factor using rate.

The rate is specified in powers of two per second. At a rate of 1 it would take 2 seconds to go from a zoom factor of 1 to 4.

Note: Using a specific rate is not supported on all cameras. If not supported, zooming will happen as fast as possible.