内容表

上一话题

QCameraFlashControl

下一话题

QCameraFocusControl

QCameraFocus

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

Inheritance diagram of PySide2.QtMultimedia.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 notes on autofocus

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

PySide2.QtMultimedia.QCameraFocus. FocusMode

常量

描述

QCameraFocus.ManualFocus

Manual or fixed focus mode.

QCameraFocus.HyperfocalFocus

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

Focus strictly to infinity.

QCameraFocus.AutoFocus

One-shot auto focus mode.

QCameraFocus.ContinuousFocus

Continuous auto focus mode.

QCameraFocus.MacroFocus

One shot auto focus to objects close to camera.

PySide2.QtMultimedia.QCameraFocus. FocusPointMode

常量

描述

QCameraFocus.FocusPointAuto

Automatically select one or multiple focus points.

QCameraFocus.FocusPointCenter

Focus to the frame center.

QCameraFocus.FocusPointFaceDetection

Focus on faces in the frame.

QCameraFocus.FocusPointCustom

Focus to the custom point, defined by customFocusPoint 特性。

PySide2.QtMultimedia.QCameraFocus. customFocusPoint ( )
返回类型

QPointF

PySide2.QtMultimedia.QCameraFocus. digitalZoom ( )
返回类型

qreal

PySide2.QtMultimedia.QCameraFocus. digitalZoomChanged ( arg__1 )
参数

arg__1 qreal

PySide2.QtMultimedia.QCameraFocus. focusMode ( )
返回类型

FocusModes

另请参阅

setFocusMode()

PySide2.QtMultimedia.QCameraFocus. focusPointMode ( )
返回类型

FocusPointMode

PySide2.QtMultimedia.QCameraFocus. focusZones ( )
返回类型

PySide2.QtMultimedia.QCameraFocus. focusZonesChanged ( )
PySide2.QtMultimedia.QCameraFocus. isAvailable ( )
返回类型

bool

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

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

PySide2.QtMultimedia.QCameraFocus. isFocusModeSupported ( mode )
参数

mode FocusModes

返回类型

bool

Returns true if the focus mode is supported by camera.

PySide2.QtMultimedia.QCameraFocus. isFocusPointModeSupported ( arg__1 )
参数

arg__1 FocusPointMode

返回类型

bool

Returns true if focus point mode is supported.

PySide2.QtMultimedia.QCameraFocus. maximumDigitalZoom ( )
返回类型

qreal

Returns the maximum digital zoom

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

PySide2.QtMultimedia.QCameraFocus. maximumDigitalZoomChanged ( arg__1 )
参数

arg__1 qreal

PySide2.QtMultimedia.QCameraFocus. maximumOpticalZoom ( )
返回类型

qreal

Returns the maximum optical zoom.

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

PySide2.QtMultimedia.QCameraFocus. maximumOpticalZoomChanged ( arg__1 )
参数

arg__1 qreal

PySide2.QtMultimedia.QCameraFocus. opticalZoom ( )
返回类型

qreal

PySide2.QtMultimedia.QCameraFocus. opticalZoomChanged ( arg__1 )
参数

arg__1 qreal

PySide2.QtMultimedia.QCameraFocus. setCustomFocusPoint ( point )
参数

point QPointF

PySide2.QtMultimedia.QCameraFocus. setFocusMode ( mode )
参数

mode FocusModes

另请参阅

focusMode()

PySide2.QtMultimedia.QCameraFocus. setFocusPointMode ( mode )
参数

mode FocusPointMode

另请参阅

focusPointMode()

PySide2.QtMultimedia.QCameraFocus. zoomTo ( opticalZoom , digitalZoom )
参数
  • opticalZoom qreal

  • digitalZoom qreal

Set the camera optical and digital zoom values.

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