Spec-Zone.ru › Qt 5.14

Класс 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, объединенных операцией 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

Spec-Zone.ru

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