QML-тип Camera
Предоставляет доступ к кадрам видоискателя и снимает фотографии и видео. Подробнее…
Строка импорта: | import QtVideoChat 1.0 |
Свойства
- availability : enumeration
- cameraState : enumeration
- cameraStatus : enumeration
- captureMode : enumeration
- deviceId : string
- displayName : string
- errorCode : enumeration
- errorString : string
- lockStatus : enumeration
- mediaObject : variant
- orientation : int
- position : enumeration
- viewfinder
- viewfinder.resolution : size
- viewfinder.minimumFrameRate : real
- viewfinder.maximumFrameRate : real
Сигналы
- cameraStateChanged(state)
- error(errorCode, errorString)
- lockStatusChanged()
Методы
- searchAndLock()
- start()
- stop()
- list<object> supportedViewfinderFrameRateRanges(size resolution)
- list<size> supportedViewfinderResolutions(real minimumFrameRate, real maximumFrameRate)
- unlock()
Подробное описание
Можно использовать 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
Свойство содержит последнюю строку ошибки, если она имеется.
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()
Разблокирует фокусировку, экспозицию и баланс белого.