Класс QCameraFocus
Класс QCameraFocus предоставляет интерфейс для настроек камеры, связанных с фокусировкой и зумом. Подробнее...
| Заголовок: | #include <QCameraFocus> |
| qmake: | QT += multimedia |
| Наследует: | QObject |
Типы публичного доступа
| Перечисление | FocusMode { ManualFocus, HyperfocalFocus, InfinityFocus, AutoFocus, ContinuousFocus, MacroFocus } |
| Флаги | FocusModes |
| Перечисление | FocusPointMode { FocusPointAuto, FocusPointCenter, FocusPointFaceDetection, FocusPointCustom } |
Свойства
|
|
Функции публичного доступа
| 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) |
Защищённые функции
| virtual | ~QCameraFocus() |
Подробное описание
На оборудовании, которое его поддерживает, этот класс позволяет настраивать фокусировку или зум (как оптический, так и цифровой). Это также включает в себя такие вещи, как режим «Макро» для работы с близкими объектами (например, считывание штрихкодов или распознавание букв) или «наведение на резкость касанием» — указание интересной области видоискателя для того, чтобы оборудование пыталось сфокусироваться на ней.
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);
const QList<QCameraFocusZone> zones = focus->focusZones();
for (const 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 |
Фокусировка на гиперфокальное расстояние, с максимальной глубиной резкости. Все объекты на расстояниях от половины этого расстояния до бесконечности будут приемлемо резкими. |
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) — на центр области.
Свойство custom focus point используется только в режиме 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.
[virtual protected] QCameraFocus::~QCameraFocus()
Уничтожает объект фокусировки камеры.
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.15/qcamerafocus.html