Spec-Zone.ru › Qt 5.15

Класс QCameraFocus

Класс QCameraFocus предоставляет интерфейс для настроек камеры, связанных с фокусировкой и зумом. Подробнее...

Заголовок: #include <QCameraFocus>
qmake: QT += multimedia
Наследует: QObject
  • Список всех членов, включая унаследованные

Типы публичного доступа

Перечисление FocusMode { ManualFocus, HyperfocalFocus, InfinityFocus, AutoFocus, ContinuousFocus, MacroFocus }
Флаги FocusModes
Перечисление FocusPointMode { FocusPointAuto, FocusPointCenter, FocusPointFaceDetection, FocusPointCustom }

Свойства

  • customFocusPoint : QPointF
  • digitalZoom : const qreal
  • focusMode : FocusModes
  • focusPointMode : FocusPointMode
  • focusZones : const QCameraFocusZoneList
  • opticalZoom : const qreal

Функции публичного доступа

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API