Класс 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, объединенных операцией OR.
перечисление 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.14/qcamerafocus.html