QCameraFocus 类

The QCameraFocus class provides an interface for focus and zoom related camera settings. 更多...

头: #include <QCameraFocus>
qmake: QT += multimedia
继承: QObject

公共类型

enum FocusMode { ManualFocus, HyperfocalFocus, InfinityFocus, AutoFocus, ContinuousFocus, MacroFocus }
flags FocusModes
enum 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 ()

详细描述

On hardware that supports it, this class lets you adjust the focus or zoom (both optical and digital). This also includes things like "Macro" mode for close up work (e.g. reading barcodes, or recognising letters), or "touch to focus" - indicating an interesting area of the viewfinder for the hardware to attempt to focus on.

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
					

Zooming can be accomplished in a number of ways - usually the more expensive but higher quality approach is an optical zoom, which allows using the full extent of the camera sensor to gather image pixels. In addition it is possible to digitally zoom, which will generally just enlarge part of the sensor frame and throw away other parts. If the camera hardware supports optical zoom this should generally always be used first. The maximumOpticalZoom () method allows this to be checked. The zoomTo () method allows changing both optical and digital zoom at once.

focus->zoomTo(3.0, 4.0); // Super zoom!
					
					

关于自动对焦的一些注意事项

Some hardware supports a movable focus lens assembly, and typically this hardware also supports automatically focusing via some heuristic. You can influence this via the FocusPointMode setting - typically the center of the frame is brought into focus, but some hardware also supports focusing on any faces detected in the frame, or on a specific point (usually provided by a user in a "touch to focus" scenario).

This class (in combination with QCameraFocusZone ) can expose information on what parts of the camera sensor image are in focus or are being used for autofocusing via the 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 .

成员类型文档编制

enum QCameraFocus:: FocusMode
flags QCameraFocus:: FocusModes

常量 描述
QCameraFocus::ManualFocus 0x1 Manual or fixed focus mode.
QCameraFocus::HyperfocalFocus 0x02 Focus to hyperfocal distance, with the maximum depth of field achieved. All objects at distances from half of this distance out to infinity will be acceptably sharp.
QCameraFocus::InfinityFocus 0x04 Focus strictly to infinity.
QCameraFocus::AutoFocus 0x8 One-shot auto focus mode.
QCameraFocus::ContinuousFocus 0x10 Continuous auto focus mode.
QCameraFocus::MacroFocus 0x20 One shot auto focus to objects close to camera.

FocusModes 类型是 typedef 对于 QFlags <FocusMode>. It stores an OR combination of FocusMode values.

enum QCameraFocus:: FocusPointMode

常量 描述
QCameraFocus::FocusPointAuto 0 Automatically select one or multiple focus points.
QCameraFocus::FocusPointCenter 1 Focus to the frame center.
QCameraFocus::FocusPointFaceDetection 2 Focus on faces in the frame.
QCameraFocus::FocusPointCustom 3 Focus to the custom point, defined by QCameraFocus::customFocusPoint 特性。

特性文档编制

customFocusPoint : QPointF

This property represents the position of the custom focus point, in relative frame coordinates: QPointF (0,0) points to the left top frame point, QPointF (0.5,0.5) points to the frame center.

The custom focus point property is used only in FocusPointCustom focus mode.

访问函数:

QPointF customFocusPoint () const
void setCustomFocusPoint (const QPointF & point )

digitalZoom : const qreal

This property holds the current digital zoom value.

访问函数:

qreal digitalZoom () const

通知程序信号:

void digitalZoomChanged (qreal value )

另请参阅 QCameraFocus::opticalZoom .

focusMode : FocusModes

This property holds the current camera focus mode.

This controls the way the camera lens assembly is configured.

访问函数:

QCameraFocus::FocusModes focusMode () const
void setFocusMode (QCameraFocus::FocusModes mode )

另请参阅 QCameraFocus::isFocusModeSupported ().

focusPointMode : FocusPointMode

This property holds the current camera focus point selection mode.

If the camera focus mode is set to use an autofocusing mode, this property controls the way the camera will select areas of the frame to use for autofocusing.

访问函数:

QCameraFocus::FocusPointMode focusPointMode () const
void setFocusPointMode (QCameraFocus::FocusPointMode mode )

另请参阅 QCameraFocus::isFocusPointModeSupported ().

focusZones : const QCameraFocusZoneList

Returns the list of active focus zones.

If QCamera::FocusPointAuto or QCamera::FocusPointFaceDetection focus mode is selected this method returns the list of zones the camera is actually focused on.

The coordinates system is the same as for custom focus points: QPointF (0,0) points to the left top frame point, QPointF (0.5,0.5) points to the frame center.

访问函数:

QCameraFocusZoneList focusZones () const

通知程序信号:

void focusZonesChanged ()

opticalZoom : const qreal

This property holds the current optical zoom value.

访问函数:

qreal opticalZoom () const

通知程序信号:

void opticalZoomChanged (qreal value )

另请参阅 QCameraFocus::digitalZoom .

成员函数文档编制

[signal] void QCameraFocus:: digitalZoomChanged ( qreal value )

Signal emitted when digital zoom value changes to new value .

注意: 通知程序信号对于特性 digitalZoom .

[signal] void QCameraFocus:: focusZonesChanged ()

This signal is emitted when the set of zones used in autofocusing is changed.

This can change when a zone is focused or loses focus, or new focus zones have been detected.

注意: 通知程序信号对于特性 focusZones .

[signal] void QCameraFocus:: maximumDigitalZoomChanged ( qreal zoom )

Signal emitted when the maximum supported digital zoom value changed.

The maximum supported zoom value can depend on other camera settings, like capture mode or resolution.

[signal] void QCameraFocus:: maximumOpticalZoomChanged ( qreal zoom )

Signal emitted when the maximum supported optical zoom value changed.

[signal] void QCameraFocus:: opticalZoomChanged ( qreal value )

Signal emitted when optical zoom value changes to new value .

注意: 通知程序信号对于特性 opticalZoom .

[virtual protected] QCameraFocus:: ~QCameraFocus ()

Destroys the camera focus object.

bool QCameraFocus:: isAvailable () const

Returns true if focus related settings are supported by this camera.

You may need to also check if any specific features are supported.

bool QCameraFocus:: isFocusModeSupported ( QCameraFocus::FocusModes mode ) const

Returns true if the focus mode is supported by camera.

bool QCameraFocus:: isFocusPointModeSupported ( QCameraFocus::FocusPointMode mode ) const

Returns true if focus point mode is supported.

qreal QCameraFocus:: maximumDigitalZoom () const

Returns the maximum digital zoom

This will be 1.0 on cameras that do not support digital zoom.

qreal QCameraFocus:: maximumOpticalZoom () const

Returns the maximum optical zoom.

This will be 1.0 on cameras that do not support optical zoom.

void QCameraFocus:: zoomTo ( qreal optical , qreal digital )

Set the camera optical and digital 缩放值。

Since there may be a physical component to move, the change in zoom value may not be instantaneous.