Класс QCameraFocus
Класс QCameraFocus предоставляет интерфейс для фокусировки и масштабирования камеры. Подробнее...
| Заголовок: | #include <QCameraFocus> |
| qmake: | QT += multimedia |
| Наследует: | QObject |
Открытые типы
| перечисление | FocusMode { РучнаяФокусировка, ГиперфокальнаяФокусировка, ФокусировкаНаБесконечность, АвтоФокусировка, НепрерывнаяФокусировка, МакроФокусировка } |
| флаги | FocusModes |
| перечисление | FocusPointMode { АвтоФокусТочка, ЦентрФокусировки, ОбнаружениеЛиц, ПользовательскаяТочкаФокусировки } |
Свойства
|
|
- 1 свойство унаследовано от QObject
Открытые функции
| QPointF | customFocusPoint() const |
| qreal | digitalZoom() const |
| FocusModes | focusMode() const |
| FocusPointMode | focusPointMode() const |
| QCameraFocusZoneList | focusZones() const |
| bool | isAvailable() const |
| bool | isFocusModeSupported(FocusModes mode) const |
| bool | isFocusPointModeSupported(FocusPointMode mode) const |
| qreal | maximumDigitalZoom() const |
| qreal | maximumOpticalZoom() const |
| qreal | opticalZoom() const |
| void | setCustomFocusPoint(const QPointF &point) |
| void | setFocusMode(FocusModes mode) |
| void | setFocusPointMode(FocusPointMode mode) |
| void | zoomTo(qreal optical, qreal digital) |
- 31 открытая функция унаследована от QObject
Сигналы
| void | digitalZoomChanged(qreal value) |
| void | focusZonesChanged() |
| void | maximumDigitalZoomChanged(qreal zoom) |
| void | maximumOpticalZoomChanged(qreal zoom) |
| void | opticalZoomChanged(qreal value) |
- 2 сигнала унаследованы от QObject
Дополнительные унаследованные члены
- 1 открытый слот унаследован от QObject
- 11 статических открытых членов унаследованы от QObject
- 9 защищенных функций унаследованы от 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.
Документация по типам членов
enum QCameraFocus::FocusModeflags QCameraFocus::FocusModes
| Постоянная | Значение | Описание |
|---|---|---|
QCameraFocus::ManualFocus |
0x1 |
Режим ручного или фиксированного фокуса. |
QCameraFocus::HyperfocalFocus |
0x02 |
Фокусировка на гиперфокальном расстоянии с достижением максимальной глубины резкости. Все объекты на расстояниях от половины этого расстояния до бесконечности будут приемлемо резкими. |
QCameraFocus::InfinityFocus |
0x04 |
Фокусировка строго на бесконечность. |
QCameraFocus::AutoFocus |
0x8 |
Режим автофокусировки «один выстрел». |
QCameraFocus::ContinuousFocus |
0x10 |
Режим непрерывной автофокусировки. |
QCameraFocus::MacroFocus |
0x20 |
Режим автофокусировки «один выстрел» на объекты, близкие к камере. |
Тип FocusModes является псевдонимом для QFlags<FocusMode>. Он хранит логическое ИЛИ сочетание значений FocusMode.
enum 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
Это свойство содержит текущий режим фокусировки камеры.
Это управляет способом конфигурации объектива камеры.
Функции доступа:
| FocusModes | focusMode() const |
| void | setFocusMode(FocusModes mode) |
См. также QCameraFocus::isFocusModeSupported().
focusPointMode : FocusPointMode
Это свойство содержит текущий режим выбора точки фокусировки камеры.
Если режим фокусировки камеры настроен на использование автоматической фокусировки, это свойство управляет способом, которым камера будет выбирать области кадра для использования в автоматической фокусировке.
Функции доступа:
| FocusPointMode | focusPointMode() const |
| void | setFocusPointMode(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(FocusModes mode) const
Возвращает true, если режим фокусировки mode поддерживается камерой.
bool QCameraFocus::isFocusPointModeSupported(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.6/qcamerafocus.html