Класс QCameraFocus
Класс QCameraFocus предоставляет интерфейс для настройки параметров камеры, связанных с фокусировкой и зумом. Подробнее...
| Заголовок: | #include <QCameraFocus> |
| qmake: | QT += multimedia |
| Наследует: | QObject |
Публичные типы
| Перечисление | FocusMode { ManualFocus, HyperfocalFocus, InfinityFocus, AutoFocus, ContinuousFocus, MacroFocus } |
| Флаги | FocusModes |
| Перечисление | FocusPointMode { FocusPointAuto, FocusPointCenter, FocusPointFaceDetection, FocusPointCustom } |
Свойства
|
|
- 1 свойство унаследовано от QObject
Публичные функции
| 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) |
- 34 публичные функции унаследованы от QObject
Сигналы
| void | digitalZoomChanged(qreal value) |
| void | focusZonesChanged() |
| void | maximumDigitalZoomChanged(qreal zoom) |
| void | maximumOpticalZoomChanged(qreal zoom) |
| void | opticalZoomChanged(qreal value) |
- 2 сигнала унаследованы от QObject
Дополнительные унаследованные члены
- 1 публичный слот унаследован от QObject
- 1 публичная переменная унаследована от QObject
- 10 статических публичных членов унаследованы от QObject
- 9 защищённых функций унаследованы от QObject
- 2 защищённые переменные унаследованы от QObject
Подробное описание
Класс 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);
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 |
Фокусировка на гипофокальном расстоянии, с достижением максимальной глубины резкости. Все объекты на расстояниях от половины этого расстояния до бесконечности будут приемлемо четкими. |
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) указывает на центр кадра.
Свойство customFocusPoint используется только в режиме фокусировки 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.
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 для камер, не поддерживающих цифровой зум.
[signal] void QCameraFocus::maximumDigitalZoomChanged(qreal zoom)
Сигнал, излучаемый при изменении максимального поддерживаемого цифрового значения zoom.
Максимальное поддерживаемое значение зума может зависеть от других настроек камеры, таких как режим захвата или разрешение.
qreal QCameraFocus::maximumOpticalZoom() const
Возвращает максимальный оптический зум.
Будет 1.0 для камер, не поддерживающих оптический зум.
[signal] void QCameraFocus::maximumOpticalZoomChanged(qreal zoom)
Сигнал, излучаемый при изменении максимального поддерживаемого значения оптического зума zoom.
[signal] void QCameraFocus::opticalZoomChanged(qreal value)
Сигнал, излучаемый при изменении значения оптического зума на новое значение value.
Примечание: Сигнал уведомления для свойства opticalZoom.
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/archives/qt-5.11/qcamerafocus.html