Класс QCameraFocus
Класс QCameraFocus предоставляет интерфейс для управления настройками камеры, связанными с фокусировкой и зумом. Подробнее...
| Заголовок: | #include <QCameraFocus> |
| qmake: | QT += multimedia |
| Наследует: | QObject |
Открытые типы
| Перечисление | FocusMode { РучнаяФокусировка, ГиперфокальнаяФокусировка, ФокусировкаНаБесконечность, АвтоФокусировка, НепрерывнаяФокусировка, МакроФокусировка } |
| Флаги | FocusModes |
| Перечисление | FocusPointMode { АвтоФокусТочка, ЦентрФокусировки, ОбнаружениеЛицФокусТочка, ПользовательскаяФокусТочка } |
Свойства
|
|
Открытые функции
| QPointF | customFocusPoint() const |
| qreal | digitalZoom() const |
| QCameraFocus::FocusModes | focusMode() const |
| QCameraFocus::FocusPointMode | focusPointMode() const |
| QCameraFocusZoneList | focusZones() const |
| bool | isAvailable() const |
| bool | isFocusModeSupported(QCameraFocus::FocusModes mode) const |
| bool | isFocusPointModeSupported(QCameraFocus::FocusPointMode mode) const |
| qreal | maximumDigitalZoom() const |
| qreal | maximumOpticalZoom() const |
| qreal | opticalZoom() const |
| void | setCustomFocusPoint(const QPointF &point) |
| void | setFocusMode(QCameraFocus::FocusModes mode) |
| void | setFocusPointMode(QCameraFocus::FocusPointMode mode) |
| void | zoomTo(qreal optical, qreal digital) |
Сигналы
| void | digitalZoomChanged(qreal value) |
| void | focusZonesChanged() |
| void | maximumDigitalZoomChanged(qreal zoom) |
| void | maximumOpticalZoomChanged(qreal zoom) |
| void | opticalZoomChanged(qreal value) |
Подробное описание
На оборудовании, которое это поддерживает, этот класс позволяет изменять фокус или зум (оптический и цифровой). Это также включает в себя такие вещи, как режим «Макро» для работы с близкими объектами (например, для считывания штрих-кодов или распознавания букв) или «наведение на фокусировку» — указание интересной области видоискателя, чтобы оборудование попыталось сфокусироваться на ней.
QCameraFocus *focus = camera->focus(); focus->setFocusPointMode(QCameraFocus::FocusPointCustom); focus->setCustomFocusPoint(QPointF(0.25f, 0.75f)); // A point near the bottom left, 25% away from the corner, near that shiny vase
Масштабирование можно выполнить несколькими способами — обычно более дорогой, но с лучшим качеством, является оптический зум, который позволяет использовать весь диапазон датчика камеры для сбора пикселей изображения. Кроме того, возможен цифровой зум, который, как правило, просто увеличивает часть кадра датчика и отбрасывает другие части. Если оборудование камеры поддерживает оптический зум, его следует использовать в первую очередь. Метод maximumOpticalZoom() позволяет проверить это. Метод zoomTo() позволяет одновременно изменять оптический и цифровой зум.
focus->zoomTo(3.0, 4.0); // Super zoom!
Некоторые замечания об автофокусе
Некоторое оборудование поддерживает подвижную линзу фокусировки, и, как правило, это оборудование также поддерживает автоматическую фокусировку с помощью некоторого эвристического метода. Вы можете повлиять на это с помощью параметра FocusPointMode — обычно в фокус попадает центр кадра, но некоторые устройства также поддерживают фокусировку на любых лицах, обнаруженных в кадре, или на определенной точке (обычно предоставляемой пользователем в сценарии «касание для фокусировки»).
Этот класс (в сочетании с QCameraFocusZone) может предоставить информацию о том, какие части изображения датчика камеры находятся в фокусе или используются для автоматической фокусировки через свойство focusZones:
focus->setFocusPointMode(QCameraFocus::FocusPointAuto);
QList<QCameraFocusZone> zones = focus->focusZones();
foreach (QCameraFocusZone zone, zones) {
if (zone.status() == QCameraFocusZone::Focused) {
// Draw a green box at zone.area()
} else if (zone.status() == QCameraFocusZone::Selected) {
// This area is selected for autofocusing, but is not in focus
// Draw a yellow box at zone.area()
}
} См. также QCameraFocusZone.
Документация типов членов
перечисление QCameraFocus::FocusModeфлаги QCameraFocus::FocusModes
| Константа | Значение | Описание |
|---|---|---|
QCameraFocus::ManualFocus |
0x1 |
Режим ручного или фиксированного фокуса. |
QCameraFocus::HyperfocalFocus |
0x02 |
Фокусировка на гипeрфокальном расстоянии с достижением максимальной глубины резкости. Все объекты на расстояниях от половины этого расстояния до бесконечности будут приемлемо резкими. |
QCameraFocus::InfinityFocus |
0x04 |
Фокусировка строго на бесконечность. |
QCameraFocus::AutoFocus |
0x8 |
Режим автофокусировки за один шаг. |
QCameraFocus::ContinuousFocus |
0x10 |
Режим непрерывной автофокусировки. |
QCameraFocus::MacroFocus |
0x20 |
Автофокусировка за один шаг на объекты, близкие к камере. |
Тип FocusModes — это псевдоним для QFlags<FocusMode>. Он хранит логическое ИЛИ сочетание значений FocusMode.
перечисление QCameraFocus::FocusPointMode
| Константа | Значение | Описание |
|---|---|---|
QCameraFocus::FocusPointAuto |
0 |
Автоматический выбор одной или нескольких точек фокусировки. |
QCameraFocus::FocusPointCenter |
1 |
Фокусировка на центре кадра. |
QCameraFocus::FocusPointFaceDetection |
2 |
Фокусировка на лицах в кадре. |
QCameraFocus::FocusPointCustom |
3 |
Фокусировка на пользовательской точке, определенной свойством QCameraFocus::customFocusPoint. |
Документация свойств
customFocusPoint : QPointF
Это свойство представляет положение пользовательской точки фокусировки в координатах относительной рамки: QPointF(0,0) указывает на левую верхнюю точку рамки, QPointF(0.5,0.5) — на центр рамки.
Свойство пользовательской точки фокусировки используется только в режиме FocusPointCustom фокусировки.
Функции доступа:
| QPointF | customFocusPoint() const |
| void | setCustomFocusPoint(const QPointF &point) |
digitalZoom : const qreal
Это свойство содержит текущее значение цифрового зума.
Функции доступа:
| qreal | digitalZoom() const |
Сигнал уведомления:
| void | digitalZoomChanged(qreal value) |
См. также QCameraFocus::opticalZoom.
focusMode : FocusModes
Это свойство содержит текущий режим фокусировки камеры.
Это управляет способом конфигурации оптической системы объектива камеры.
Функции доступа:
| QCameraFocus::FocusModes | focusMode() const |
| void | setFocusMode(QCameraFocus::FocusModes mode) |
См. также QCameraFocus::isFocusModeSupported().
focusPointMode : FocusPointMode
Это свойство содержит текущий режим выбора точки фокусировки камеры.
Если режим фокусировки камеры настроен на использование автоматического режима фокусировки, это свойство управляет способом, которым камера будет выбирать области кадра для использования в автоматическом режиме фокусировки.
Функции доступа:
| QCameraFocus::FocusPointMode | focusPointMode() const |
| void | setFocusPointMode(QCameraFocus::FocusPointMode mode) |
См. также QCameraFocus::isFocusPointModeSupported().
focusZones : const QCameraFocusZoneList
Возвращает список активных зон фокусировки.
Если выбран режим фокусировки QCamera::FocusPointAuto или QCamera::FocusPointFaceDetection, этот метод возвращает список зон, на которых камера фактически сфокусирована.
Система координат такая же, как и для пользовательских точек фокусировки: QPointF(0,0) указывает на левую верхнюю точку рамки, QPointF(0.5,0.5) — на центр рамки.
Функции доступа:
| QCameraFocusZoneList | focusZones() const |
Сигнал уведомления:
| void | focusZonesChanged() |
opticalZoom : const qreal
Это свойство содержит текущее значение оптического зума.
Функции доступа:
| qreal | opticalZoom() const |
Сигнал уведомления:
| void | opticalZoomChanged(qreal value) |
См. также QCameraFocus::digitalZoom.
Документация по членам-функциям
[signal] void QCameraFocus::digitalZoomChanged(qreal value)
Сигнал, генерируемый при изменении значения цифрового зума на новое значение value.
Примечание: Сигнал уведомления для свойства digitalZoom.
[signal] void QCameraFocus::focusZonesChanged()
Этот сигнал генерируется при изменении набора зон, используемых в автоматической фокусировке.
Это может измениться, когда зона сфокусирована или теряет фокус, или были обнаружены новые зоны фокусировки.
Примечание: Сигнал уведомления для свойства focusZones.
[signal] void QCameraFocus::maximumDigitalZoomChanged(qreal zoom)
Сигнал, генерируемый при изменении максимального поддерживаемого значения цифрового зума zoom.
Максимальное поддерживаемое значение зума может зависеть от других настроек камеры, таких как режим захвата или разрешение.
[signal] void QCameraFocus::maximumOpticalZoomChanged(qreal zoom)
Сигнал, генерируемый при изменении максимального поддерживаемого значения оптического зума zoom.
[signal] void QCameraFocus::opticalZoomChanged(qreal value)
Сигнал, генерируемый при изменении значения оптического зума на новое значение value.
Примечание: Сигнал уведомления для свойства opticalZoom.
bool QCameraFocus::isAvailable() const
Возвращает true, если настройки, связанные с фокусировкой, поддерживаются этой камерой.
Возможно, вам также необходимо проверить, поддерживаются ли определённые функции.
bool QCameraFocus::isFocusModeSupported(QCameraFocus::FocusModes mode) const
Возвращает true, если режим фокусировки mode поддерживается камерой.
bool QCameraFocus::isFocusPointModeSupported(QCameraFocus::FocusPointMode mode) const
Возвращает true, если режим точки фокусировки mode поддерживается.
qreal QCameraFocus::maximumDigitalZoom() const
Возвращает максимальный цифровой зум.
Это будет 1.0 на камерах, которые не поддерживают цифровой зум.
qreal QCameraFocus::maximumOpticalZoom() const
Возвращает максимальный оптический зум.
Это будет 1.0 на камерах, которые не поддерживают оптический зум.
void QCameraFocus::zoomTo(qreal optical, qreal digital)
Устанавливает значения оптического и цифрового зума камеры optical и digital.
Поскольку может быть физический компонент для перемещения, изменение значения зума может не быть мгновенным.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qcamerafocus.html