Документация
ОС Аврора 5.0.1

QML-тип Camera

Предоставляет доступ к кадрам видоискателя и снимает фотографии и видео. Подробнее…

Строка импорта: import QtVideoChat 1.0

Свойства

Сигналы

Методы

Подробное описание

Можно использовать Camera для съёмки изображений и видеороликов с камеры, а также для управления параметрами съёмки и обработки, применяемым к изображениям. Чтобы отобразить видоискатель, можно использовать VideoOutput с Camera, установленной в качестве источника.

Item {
    width: 640
    height: 360

    Camera {
        id: camera

        imageProcessing.whiteBalanceMode: CameraImageProcessing.WhiteBalanceFlash

        exposure {
            exposureCompensation: -1.0
            exposureMode: Camera.ExposurePortrait
        }

        flash.mode: Camera.FlashRedEyeReduction

        imageCapture {
            onImageCaptured: {
                photoPreview.source = preview  // Показывает предварительную версию в Image
            }
        }
    }

    VideoOutput {
        source: camera
        anchors.fill: parent
        focus : visible // получает фокус и захватывает события нажатий, когда компонент виден
    }

    Image {
        id: photoPreview
    }
}

Если доступно несколько камер, можно выбрать, какую из них использовать, установив для свойства deviceId значение из QtVideoChat.availableCameras. На мобильном устройстве можно удобно переключаться между фронтальной и задней камерой, задав свойство position.

Различные настройки и функции стека Camera распределены по нескольким дочерним свойствам Camera.

Свойство Описание
imageCapture Методы и свойства для съёмки неподвижных изображений.
videoRecording Методы и свойства для съёмки видео.
exposure Методы и свойства регулировки экспозиции (диафрагма, выдержка и т.д.).
focus Методы и свойства для настройки фокуса и предоставления обратной связи о ходе автофокусировки.
flash Методы и свойства управления вспышкой камеры.
imageProcessing Методы и свойства для настройки параметров обработки изображения камеры.

Базовое управление состоянием камеры, отчёты об ошибках и простые свойства масштабирования доступны в самом компоненте Camera. Для интеграции с кодом C++ свойство mediaObject позволяет получить доступ к стандартным элементам управления камерой Qt Multimedia.

Для применения многих настроек камеры может потребоваться некоторое время, и они могут быть ограничены определёнными поддерживаемыми значениями в зависимости от аппаратного обеспечения. Часть настроек камеры могут быть установлены вручную или автоматически. Эти свойства содержат текущее заданное значение. Например, когда автофокусировка включена, зоны фокусировки располагаются в свойстве focus.

Дополнительная информация находится в обзорной статье.

Описание свойств

availability : enumeration

Свойство описывает доступность камеры.

Состояние доступности может быть одним из следующих:

Значение Описание
Available Камера доступна для использования.
Busy Камера в данный момент занята, так как используется другим процессом.
Unavailable Камера недоступна для использования (может отсутствовать аппаратное обеспечение камеры).
ResourceMissing Камеру нельзя использовать из-за отсутствия ресурсов. Возможно, удастся повторить попытку позже.

cameraState : enumeration

Свойство содержит текущее состояние объекта камеры, которое может быть одним из следующих:

Значение Описание
UnloadedState Исходное состояние камеры, камера не загружена. Возможности камеры (за исключением поддерживаемых режимов съёмки) неизвестны. Это состояние экономит больше всего энергии, но требует больше всего времени, чтобы подготовиться к съёмке. Хотя в этом состоянии поддерживаемые параметры неизвестны, всё равно можно установить параметры съёмки камеры, такие как кодек, разрешение или частота кадров.
LoadedState Камера загружена и готова к настройке. В состоянии ожидания можно запрашивать возможности камеры, устанавливать разрешение съёмки, кодеки и т.д. Видоискатель в данном состоянии не активен.
ActiveState В активном состоянии доступны кадры видоискателя и камера готова к съёмке.

Состояние камеры по умолчанию — ActiveState.

cameraStatus : enumeration

Свойство содержит текущий статус объекта камеры, который может быть одним из следующих:

Значение Описание
ActiveStatus Камера запущена и может выдавать данные, в видоискателе отображаются видеокадры. В зависимости от бэкенда изменение параметров камеры, таких как режим съёмки, кодеки или разрешение в ActiveState, может привести к изменению состояния на LoadedStatus и StartingStatus, пока параметры применяются, и обратно на ActiveStatus, когда камера будет готова.
StartingStatus Камера запускается в результате перехода состояния в Camera.ActiveState. Служба камеры ещё не готова к съёмке.
StoppingStatus Камера останавливается в результате перехода состояния из Camera.ActiveState в Camera.LoadedState или Camera.UnloadedState.
StandbyStatus Камера находится в энергосберегающем режиме ожидания. Камера может перейти в режим ожидания после некоторого времени бездействия в состоянии Camera.LoadedState.
LoadedStatus Камера загружена и готова к настройке. Этот статус указывает на то, что устройство камеры открыто и можно запросить поддерживаемые параметры съёмки изображения и видео, такие как разрешение, частота кадров и кодеки.
LoadingStatus Загрузка устройства камеры в результате перехода состояния из Camera.UnloadedState в Camera.LoadedState или Camera.ActiveState.
UnloadingStatus Устройство камеры выгружается в результате перехода состояния из Camera.LoadedState или Camera.ActiveState в Camera.UnloadedState.
UnloadedStatus Исходное состояние камеры, камера не загружена. Возможности камеры, включая поддерживаемые параметры съёмки, могут быть неизвестны.
UnavailableStatus Камера или бэкенд камеры недоступны.

captureMode : enumeration

В этом свойстве указывается режим захвата камеры, который может быть одним из следующих:

Значение Описание
CaptureViewfinder Камера настроена только на отображение видоискателя.
CaptureStillImage Подготовка камеры к съемке неподвижных изображений.
CaptureVideo Подготовка камеры к съемке видео.

По умолчанию используется режим захвата CaptureStillImage.

deviceId : string

Свойство содержит уникальный идентификатор используемого устройства камеры. Он может быть неудобочитаемым для человека.

Идентификаторы всех доступных устройств можно получить из QtVideoChat.availableCameras. Если значение не указано или задана пустая строка, будет использоваться системная камера по умолчанию.

Если возможно, cameraState, captureMode и другие параметры камеры сохраняются при смене устройства камеры.

См. также displayName и position.

[read-only] displayName : string

Свойство содержит удобочитаемое имя камеры.

Свойство можно использовать для отображения имени камеры в пользовательском интерфейсе.

См. также deviceId.

errorCode : enumeration

Свойство содержит код последней ошибки.

См. также error и errorString.

errorString : string

Свойство содержит последнюю строку ошибки, если она имеется.

См. также error и errorCode.

lockStatus : enumeration

Свойство содержит статус всех запрошенных блокировок камеры.

Статус может быть одним из следующих значений:

Значение Описание
Unlocked Приложение не интересуется значениями настроек камеры. Камера может сохранять этот параметр без изменений, что типично для фокусировки камеры, или постоянно регулировать экспозицию и баланс белого, чтобы изображение в видоискателе было хорошим.
Searching Приложение запросило блокировку фокусировки, экспозиции или баланса белого с помощью searchAndLock(). Это состояние указывает на то, что камера фокусируется или рассчитывает экспозицию и баланс белого.
Locked Фокус камеры, экспозиция или баланс белого заблокированы. Камера готова к съёмке, и приложение может проверить параметры экспозиции.Заблокированное состояние обычно означает, что запрошенный параметр остается неизменным, за исключением случаев, когда требуется постоянное обновление параметра. Например, в режиме непрерывной фокусировки фокус считается заблокированным, пока объект находится в фокусе, даже если фактическое расстояние фокусировки может постоянно меняться.

mediaObject : variant

Свойство содержит собственный медиа-объект для камеры.

Его можно использовать для получения указателя на объект QCamera для интеграции с кодом C++.

QObject *qmlCamera; // Объект QML Camera
QCamera *camera = qvariant_cast<QCamera *>(qmlCamera->property("mediaObject"));

Примечание. Это свойство недоступно из QML.

[read-only] orientation : int

Свойство определяет физическую ориентацию сенсора камеры.

Значение представляет собой угол ориентации (по часовой стрелке с шагом 90 градусов) датчика камеры по отношению к дисплею в его естественной ориентации.

Например, предположим, что мобильное устройство изначально находится в портретной ориентации. Задняя камера установлена в альбомной ориентации. Если верхняя сторона сенсора камеры выровнена по правому краю экрана в естественной ориентации, orientation возвращает 270. Если верхняя сторона сенсора фронтальной камеры выровнена по правому краю экрана, orientation возвращает значение 90.

См. также VideoOutput::orientation.

position : enumeration

Свойство определяет физическое положение камеры в аппаратной системе.

Положение может быть одним из следующих:

  • Camera.UnspecifiedPosition — положение камеры не указано или неизвестно.
  • Camera.BackFace — камера находится на задней панели системного оборудования. Например, на мобильном устройстве это означает, что она находится на противоположной стороне экрана.
  • Camera.FrontFace — камера находится на передней панели системного оборудования. Например, на мобильном устройстве это означает, что она находится на той же стороне, что и экран. Кадры видоискателя фронтальных камер зеркально отражены по горизонтали, поэтому пользователи могут видеть себя смотрящимися в зеркало. Захваченные изображения или видео отображаются не зеркально.

На мобильном устройстве свойство можно использовать для простого выбора между фронтальной и задней камерами. Если для него задано значение Camera.UnspecifiedPosition, будет использоваться системная камера по умолчанию.

Если возможно, cameraState, captureMode и другие параметры камеры сохраняются при смене устройства камеры.

См. также deviceId.

viewfinder group
viewfinder.resolution : size
viewfinder.minimumFrameRate : real
viewfinder.maximumFrameRate : real

Свойства содержат настройки видоискателя.

viewfinder.resolution содержит разрешение видоискателя камеры. Если разрешение не указано или оно пусто, бэкенд использует значение по умолчанию.

viewfinder.minimumFrameRate содержит минимальную частоту кадров для видоискателя в кадрах в секунду. Если значение не задано или установлено значение 0, бэкенд использует значение по умолчанию.

viewfinder.maximumFrameRate содержит максимальную частоту кадров для видоискателя в кадрах в секунду. Если значение не задано или установлено значение 0, бэкенд использует значение по умолчанию.

Если viewfinder.minimumFrameRate равно viewfinder.maximumFrameRate, частота кадров является фиксированной. В противном случае фактическая частота кадров колеблется между двумя значениями.

Изменение настроек видоискателя, когда камера находится в состоянии Camera.ActiveState, может привести к перезапуску камеры.

Если камера используется для съёмки видео или изображений, настройки видоискателя могут игнорироваться, если они противоречат настройкам съёмки. Можно проверить фактические настройки видоискателя, когда камера находится в состоянии Camera.ActiveStatus.

Поддерживаемые значения можно получить с помощью supportedViewfinderResolutions() и supportedViewfinderFrameRateRanges().

Описание сигналов

cameraStateChanged(state)

Сигнал испускается, когда состояние камеры изменилось на state. Поскольку изменение состояния может занять некоторое время, этот сигнал может поступить через некоторое время после того, как было запрошено изменение состояния.

Соответствующий обработчик — onCameraStateChanged.

error(errorCode, errorString)

Сигнал испускается при возникновении ошибки. Значение перечисления errorCode является одним из значений, определённых ниже, а описательное строковое значение доступно в errorString.

Значение Описание
NoError Ошибок не было.
CameraError Произошла ошибка.
InvalidRequestError Системный ресурс не поддерживает запрошенную функциональность.
ServiceMissingError Сервис камеры недоступен.
NotSupportedFeatureError Функция не поддерживается.

Соответствующий обработчик — onError.

См. также errorCode и errorString.

lockStatusChanged()

Сигнал испускается при изменении состояния блокировки (фокус, экспозиция и т.д.). Это может произойти, когда блокировка (например, автофокусировка) завершена или не удалась.

Соответствующий обработчик — onLockStatusChanged.

Описание методов

searchAndLock()

Начинает фокусировку, экспозицию и расчёт баланса белого.

Метод уместно вызывать при нажатии кнопки фокусировки камеры (или полунажатии кнопки съёмки камеры). Если камера поддерживает автофокусировку, информация о зонах фокусировки доступна через свойство focus.

start()

Запускает камеру. Будут доступны кадры видоискателя, и будет возможен захват изображения или видео.

stop()

Останавливает камеру, но оставляет загруженным стек камер.

list<object> supportedViewfinderFrameRateRanges(size resolution = undefined)

Возвращает список поддерживаемых диапазонов частоты кадров видоискателя.

Каждый объект диапазона в списке имеет свойства minimumFrameRate и maximumFrameRate.

Если указан необязательный параметр resolution, возвращаемый список сокращается до диапазонов частоты кадров, поддерживаемых для данного resolution.

Камера должна быть загружена перед вызовом этой функции, иначе возвращаемый список будет пуст.

Этот метод QML был введён в Qt 5.5.

См. также viewfinder.

list<size> supportedViewfinderResolutions(real minimumFrameRate = undefined, real maximumFrameRate = undefined)

Возвращает список поддерживаемых разрешений видоискателя.

Если указаны оба необязательных параметра minimumFrameRate и maximumFrameRate, возвращаемый список сокращается до разрешений, поддерживаемых для данного диапазона частоты кадров.

Камера должна быть загружена перед вызовом этой функции, иначе возвращаемый список будет пуст.

Этот метод QML был введён в Qt 5.5.

См. также viewfinder.

unlock()

Разблокирует фокусировку, экспозицию и баланс белого.

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.