QCamera 类提供系统摄像头设备的接口。 更多...
头: | #include <QCamera> |
CMake: |
find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia) |
qmake: | QT += multimedia |
实例化: | Camera |
继承: | QObject |
enum | Error { NoError, CameraError } |
enum | ExposureMode { ExposureAuto, ExposureManual, ExposurePortrait, ExposureNight, ExposureSports, …, ExposureBarcode } |
enum class | Feature { ColorTemperature, ExposureCompensation, IsoSensitivity, ManualExposureTime, CustomFocusPoint, FocusDistance } |
flags | 特征 |
enum | FlashMode { FlashOff, FlashOn, FlashAuto } |
enum | FocusMode { FocusModeAuto, FocusModeAutoNear, FocusModeAutoFar, FocusModeHyperfocal, FocusModeInfinity, FocusModeManual } |
enum | TorchMode { TorchOff, TorchOn, TorchAuto } |
enum | WhiteBalanceMode { WhiteBalanceAuto, WhiteBalanceManual, WhiteBalanceSunlight, WhiteBalanceCloudy, WhiteBalanceShade, …, WhiteBalanceSunset } |
|
|
QCamera (QObject * parent = nullptr) | |
QCamera (const QCameraDevice & cameraDevice , QObject * parent = nullptr) | |
QCamera (QCameraDevice::Position position , QObject * parent = nullptr) | |
virtual | ~QCamera () |
QCameraDevice | cameraDevice () const |
QCameraFormat | cameraFormat () const |
QMediaCaptureSession * | captureSession () const |
int | colorTemperature () const |
QPointF | customFocusPoint () const |
QCamera::Error | error () const |
QString | errorString () const |
float | exposureCompensation () const |
QCamera::ExposureMode | exposureMode () const |
float | exposureTime () const |
QCamera::FlashMode | flashMode () const |
float | focusDistance () const |
QCamera::FocusMode | focusMode () const |
QPointF | focusPoint () const |
bool | isActive () const |
bool | isAvailable () const |
bool | isExposureModeSupported (QCamera::ExposureMode mode ) const |
bool | isFlashModeSupported (QCamera::FlashMode mode ) const |
bool | isFlashReady () const |
bool | isFocusModeSupported (QCamera::FocusMode mode ) const |
bool | isTorchModeSupported (QCamera::TorchMode mode ) const |
bool | isWhiteBalanceModeSupported (QCamera::WhiteBalanceMode mode ) const |
int | isoSensitivity () const |
float | manualExposureTime () const |
int | manualIsoSensitivity () const |
float | maximumExposureTime () const |
int | maximumIsoSensitivity () const |
float | maximumZoomFactor () const |
float | minimumExposureTime () const |
int | minimumIsoSensitivity () const |
float | minimumZoomFactor () const |
void | setCameraDevice (const QCameraDevice & cameraDevice ) |
void | setCameraFormat (const QCameraFormat & format ) |
void | setCustomFocusPoint (const QPointF & point ) |
void | setFocusDistance (float d ) |
void | setFocusMode (QCamera::FocusMode mode ) |
void | setZoomFactor (float factor ) |
QCamera::Features | supportedFeatures () const |
QCamera::TorchMode | torchMode () const |
QCamera::WhiteBalanceMode | whiteBalanceMode () const |
float | zoomFactor () const |
void | setActive (bool active ) |
void | setAutoExposureTime () |
void | setAutoIsoSensitivity () |
void | setColorTemperature (int colorTemperature ) |
void | setExposureCompensation (float ev ) |
void | setExposureMode (QCamera::ExposureMode mode ) |
void | setFlashMode (QCamera::FlashMode mode ) |
void | setManualExposureTime (float seconds ) |
void | setManualIsoSensitivity (int iso ) |
void | setTorchMode (QCamera::TorchMode mode ) |
void | setWhiteBalanceMode (QCamera::WhiteBalanceMode mode ) |
void | start () |
void | stop () |
void | zoomTo (float factor , float rate ) |
void | activeChanged (bool) |
void | cameraDeviceChanged () |
void | cameraFormatChanged () |
void | colorTemperatureChanged () const |
void | customFocusPointChanged () |
void | errorChanged () |
void | errorOccurred (QCamera::Error error , const QString & errorString ) |
void | exposureCompensationChanged (float value ) |
void | exposureModeChanged () |
void | exposureTimeChanged (float speed ) |
void | flashModeChanged () |
void | flashReady (bool ready ) |
void | focusDistanceChanged (float) |
void | focusModeChanged () |
void | focusPointChanged () |
void | isoSensitivityChanged (int value ) |
void | manualExposureTimeChanged (float speed ) |
void | manualIsoSensitivityChanged (int) |
void | maximumZoomFactorChanged (float) |
void | minimumZoomFactorChanged (float) |
void | supportedFeaturesChanged () |
void | torchModeChanged () |
void | whiteBalanceModeChanged () const |
void | zoomFactorChanged (float) |
QCamera 可以用于 QMediaCaptureSession 为视频录制和图像获取。
可以使用 QCameraDevice 列表可用摄像头并选取要使用的摄像头。
const QList<QCameraDevice> cameras = QMediaDevices::videoInputs(); for (const QCameraDevice &cameraDevice : cameras) { if (cameraDevice.description() == "mycamera") camera = new QCamera(cameraDevice); }
On hardware that supports it, QCamera lets you adjust the focus and zoom. This also includes functionality such as a "Macro" mode for close up work (e.g. reading barcodes, or recognizing letters), or "touch to focus" - indicating an interesting area of the image for the hardware to attempt to focus on.
camera->setFocusPointMode(QCamera::FocusModeManual); camera->setCustomFocusPoint(QPointF(0.25f, 0.75f)); // A point near the bottom left, 25% away from the corner, near that shiny vase
The minimumZoomFactor () 和 maximumZoomFactor () methods provide the range of supported zoom factors. The zoomTo () method allows changing the zoom factor.
camera->setZoomFactor(3.0);
After capturing the raw data for a camera frame, the camera hardware and software performs various image processing tasks to produce the final image. This includes compensating for ambient light color, reducing noise, as well as making some other adjustments to the image.
You can control many of these processing steps through the Camera properties. For example, you can set the white balance (or color temperature) used for processing images:
camera->setWhiteBalanceMode(QCamera::WhiteBalanceFluorescent);
For more information on image processing of camera frames, see 摄像头图像处理 .
见 摄像头概述 了解更多信息。
此枚举保持最后错误代码。
常量 | 值 | 描述 |
---|---|---|
QCamera::NoError
|
0
|
没有出现错误。 |
QCamera::CameraError
|
1
|
有出现错误。 |
常量 | 值 | 描述 |
---|---|---|
QCamera::ExposureAuto
|
0
|
自动模式。 |
QCamera::ExposureManual
|
1
|
手动模式。 |
QCamera::ExposurePortrait
|
2
|
肖象曝光模式。 |
QCamera::ExposureNight
|
3
|
夜间模式。 |
QCamera::ExposureSports
|
4
|
亮点曝光模式。 |
QCamera::ExposureSnow
|
5
|
Snow exposure mode. |
QCamera::ExposureBeach
|
6
|
Beach exposure mode. |
QCamera::ExposureAction
|
7
|
Action mode. Since 5.5 |
QCamera::ExposureLandscape
|
8
|
Landscape mode. Since 5.5 |
QCamera::ExposureNightPortrait
|
9
|
Night portrait mode. Since 5.5 |
QCamera::ExposureTheatre
|
10
|
Theatre mode. Since 5.5 |
QCamera::ExposureSunset
|
11
|
Sunset mode. Since 5.5 |
QCamera::ExposureSteadyPhoto
|
12
|
Steady photo mode. Since 5.5 |
QCamera::ExposureFireworks
|
13
|
Fireworks mode. Since 5.5 |
QCamera::ExposureParty
|
14
|
Party mode. Since 5.5 |
QCamera::ExposureCandlelight
|
15
|
Candlelight mode. Since 5.5 |
QCamera::ExposureBarcode
|
16
|
Barcode mode. Since 5.5 |
Describes a set of features supported by the camera. The returned value can be a combination of:
常量 | 值 | 描述 |
---|---|---|
QCamera::Feature::ColorTemperature
|
0x1
|
The Camera supports setting a custom colorTemperature . |
QCamera::Feature::ExposureCompensation
|
0x2
|
The Camera supports setting a custom exposureCompensation . |
QCamera::Feature::IsoSensitivity
|
0x4
|
The Camera supports setting a custom isoSensitivity . |
QCamera::Feature::ManualExposureTime
|
0x8
|
The Camera supports setting a manual exposure Time . |
QCamera::Feature::CustomFocusPoint
|
0x10
|
The Camera supports setting a custom focus point . |
QCamera::Feature::FocusDistance
|
0x20
|
The Camera supports setting the focusDistance 特性。 |
The Features type is a typedef for QFlags <Feature>. It stores an OR combination of Feature values.
常量 | 值 | 描述 |
---|---|---|
QCamera::FlashOff
|
0
|
Flash is Off. |
QCamera::FlashOn
|
1
|
Flash is On. |
QCamera::FlashAuto
|
2
|
自动闪光。 |
常量 | 值 | 描述 |
---|---|---|
QCamera::FocusModeAuto
|
0
|
Continuous auto focus mode. |
QCamera::FocusModeAutoNear
|
1
|
Continuous auto focus mode on near objects. |
QCamera::FocusModeAutoFar
|
2
|
Continuous auto focus mode on objects far away. |
QCamera::FocusModeHyperfocal
|
3
|
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. |
QCamera::FocusModeInfinity
|
4
|
Focus strictly to infinity. |
QCamera::FocusModeManual
|
5
|
Manual or fixed focus mode. |
常量 | 值 | 描述 |
---|---|---|
QCamera::TorchOff
|
0
|
Torch is Off. |
QCamera::TorchOn
|
1
|
Torch is On. |
QCamera::TorchAuto
|
2
|
Automatic torch. |
常量 | 值 | 描述 |
---|---|---|
QCamera::WhiteBalanceAuto
|
0
|
Auto white balance mode. |
QCamera::WhiteBalanceManual
|
1
|
Manual white balance. In this mode the white balance should be set with setColorTemperature () |
QCamera::WhiteBalanceSunlight
|
2
|
Sunlight white balance mode. |
QCamera::WhiteBalanceCloudy
|
3
|
Cloudy white balance mode. |
QCamera::WhiteBalanceShade
|
4
|
Shade white balance mode. |
QCamera::WhiteBalanceTungsten
|
5
|
Tungsten (incandescent) white balance mode. |
QCamera::WhiteBalanceFluorescent
|
6
|
Fluorescent white balance mode. |
QCamera::WhiteBalanceFlash
|
7
|
Flash white balance mode. |
QCamera::WhiteBalanceSunset
|
8
|
Sunset white balance mode. |
Describes whether the camera is currently active.
访问函数:
bool | isActive () const |
void | setActive (bool active ) |
通知程序信号:
void | activeChanged (bool) |
返回 QCameraDevice object associated with this camera.
访问函数:
QCameraDevice | cameraDevice () const |
void | setCameraDevice (const QCameraDevice & cameraDevice ) |
通知程序信号:
void | cameraDeviceChanged () |
Returns the camera format currently used by the camera.
注意: When using the FFMPEG backend on an Android target device if you request YUV420P format, you will receive either a fully planar 4:2:0 YUV420P or a semi-planar NV12/NV21. This depends on the codec implemented by the device OEM.
访问函数:
QCameraFormat | cameraFormat () const |
void | setCameraFormat (const QCameraFormat & format ) |
通知程序信号:
void | cameraFormatChanged () |
另请参阅 QCameraDevice::videoFormats .
Returns the current color temperature if the current white balance mode is
WhiteBalanceManual
. For other modes the return value is undefined.
访问函数:
int | colorTemperature () const |
void | setColorTemperature (int colorTemperature ) |
通知程序信号:
void | colorTemperatureChanged () const |
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.
You can check whether custom focus points are supported by querying supportedFeatures () with the Feature. CustomFocusPoint 标志。
访问函数:
QPointF | customFocusPoint () const |
void | setCustomFocusPoint (const QPointF & point ) |
通知程序信号:
void | customFocusPointChanged () |
[read-only]
error
: const
Error
Returns the error state of the camera.
访问函数:
QCamera::Error | error () const |
通知程序信号:
void | errorChanged () |
[read-only]
errorString
: const
QString
Returns a human readable string describing a camera's error state.
访问函数:
QString | errorString () const |
通知程序信号:
void | errorChanged () |
Exposure compensation in EV units.
Exposure compensation property allows to adjust the automatically calculated exposure.
访问函数:
float | exposureCompensation () const |
void | setExposureCompensation (float ev ) |
通知程序信号:
void | exposureCompensationChanged (float value ) |
This property holds the exposure mode being used.
访问函数:
QCamera::ExposureMode | exposureMode () const |
void | setExposureMode (QCamera::ExposureMode mode ) |
通知程序信号:
void | exposureModeChanged () |
另请参阅 QCamera::isExposureModeSupported .
[read-only]
exposureTime
: const
float
Camera's exposure time in seconds.
访问函数:
float | exposureTime () const |
通知程序信号:
void | exposureTimeChanged (float speed ) |
另请参阅 minimumExposureTime (), maximumExposureTime (),和 setManualExposureTime ().
This property holds the flash mode being used.
Enables a certain flash mode if the camera has a flash.
访问函数:
QCamera::FlashMode | flashMode () const |
void | setFlashMode (QCamera::FlashMode mode ) |
通知程序信号:
void | flashModeChanged () |
另请参阅 QCamera::FlashMode , QCamera::isFlashModeSupported ,和 QCamera::isFlashReady .
[read-only]
flashReady
: const
bool
Indicates if the flash is charged and ready to use.
访问函数:
bool | isFlashReady () const | [见下文注意事项] |
注意: 此函数可以被援引,通过元对象系统和从 QML。见 Q_INVOKABLE .
通知程序信号:
void | flashReady (bool ready ) |
This property return an approximate focus distance of the camera. The value reported is between 0 and 1, 0 being the closest possible focus distance, 1 being as far away as possible. Note that 1 is often, but not always infinity.
Setting the focus distance will be ignored unless the focus mode is set to FocusModeManual .
访问函数:
float | focusDistance () const |
void | setFocusDistance (float d ) |
通知程序信号:
void | focusDistanceChanged (float) |
This property holds the current camera focus mode.
Sets up different focus modes for the camera. All auto focus modes will focus continuously. Locking the focus is possible by setting the focus mode to FocusModeManual . This will keep the current focus and stop any automatic focusing.
访问函数:
QCamera::FocusMode | focusMode () const |
void | setFocusMode (QCamera::FocusMode mode ) |
另请参阅 isFocusModeSupported .
[read-only]
focusPoint
: const
QPointF
Returns the point currently used by the auto focus system to focus onto.
访问函数:
QPointF | focusPoint () const |
通知程序信号:
void | focusPointChanged () |
[read-only]
isoSensitivity
: const
int
This property holds the sensor ISO sensitivity.
Describes the ISO sensitivity currently used by the camera.
访问函数:
int | isoSensitivity () const |
通知程序信号:
void | isoSensitivityChanged (int value ) |
另请参阅 setAutoIsoSensitivity () 和 setManualIsoSensitivity ().
Set the manual exposure time to seconds
访问函数:
float | manualExposureTime () const |
void | setManualExposureTime (float seconds ) |
通知程序信号:
void | manualExposureTimeChanged (float speed ) |
Describes a manually set ISO sensitivity
Setting this property to -1 (the default), implies that the camera automatically adjusts the ISO sensitivity.
访问函数:
int | manualIsoSensitivity () const |
void | setManualIsoSensitivity (int iso ) |
通知程序信号:
void | manualIsoSensitivityChanged (int) |
[read-only]
maximumZoomFactor
: const
float
Returns the maximum zoom factor.
This will be
1.0
on cameras that do not support zooming.
访问函数:
float | maximumZoomFactor () const |
通知程序信号:
void | maximumZoomFactorChanged (float) |
[read-only]
minimumZoomFactor
: const
float
Returns the minimum zoom factor.
This will be
1.0
on cameras that do not support zooming.
访问函数:
float | minimumZoomFactor () const |
通知程序信号:
void | minimumZoomFactorChanged (float) |
[read-only]
supportedFeatures
: const
特征
Returns the features supported by this camera.
访问函数:
QCamera::Features | supportedFeatures () const |
通知程序信号:
void | supportedFeaturesChanged () |
另请参阅 QCamera::Feature .
This property holds the torch mode being used.
A torch is a continuous source of light. It can be used during video recording in low light conditions. Enabling torch mode will usually override any currently set flash mode.
访问函数:
QCamera::TorchMode | torchMode () const |
void | setTorchMode (QCamera::TorchMode mode ) |
通知程序信号:
void | torchModeChanged () |
另请参阅 QCamera::TorchMode , QCamera::isTorchModeSupported ,和 QCamera::flashMode .
Returns the white balance mode being used.
访问函数:
QCamera::WhiteBalanceMode | whiteBalanceMode () const |
void | setWhiteBalanceMode (QCamera::WhiteBalanceMode mode ) |
通知程序信号:
void | whiteBalanceModeChanged () const |
This property holds the current zoom factor.
Gets or sets the current zoom factor. Values will be clamped between minimumZoomFactor and maximumZoomFactor .
访问函数:
float | zoomFactor () const |
void | setZoomFactor (float factor ) |
通知程序信号:
void | zoomFactorChanged (float) |
[explicit]
QCamera::
QCamera
(
QObject
*
parent
= nullptr)
Construct a QCamera with a parent .
Selects the default camera on the system if more than one camera is available.
[explicit]
QCamera::
QCamera
(const
QCameraDevice
&
cameraDevice
,
QObject
*
parent
= nullptr)
Construct a QCamera from a camera description cameraDevice and parent .
[explicit]
QCamera::
QCamera
(
QCameraDevice::Position
position
,
QObject
*
parent
= nullptr)
Construct a QCamera which uses a hardware camera located a the specified position .
For example on a mobile phone it can be used to easily choose between front-facing and back-facing cameras.
If no camera is available at the specified position or if position is QCameraDevice::UnspecifiedPosition , the default camera is used.
[虚拟]
QCamera::
~QCamera
()
销毁摄像头对象。
Returns the capture session this camera is connected to, or a nullptr if the camera is not connected to a capture session.
使用 QMediaCaptureSession::setCamera () to connect the camera to a session.
[signal]
void
QCamera::
errorOccurred
(
QCamera::Error
error
, const
QString
&
errorString
)
This signal is emitted when error state changes to error . A description of the error is provided as errorString .
[signal]
void
QCamera::
exposureCompensationChanged
(
float
value
)
Signal emitted when the exposure compensation changes to value .
注意: 通知程序信号对于特性 exposureCompensation .
Returns the current exposure time in seconds.
注意: Getter function for property exposureTime.
[signal]
void
QCamera::
exposureTimeChanged
(
float
speed
)
Signals that a camera's exposure speed 已改变。
注意: 通知程序信号对于特性 exposureTime .
[signal]
void
QCamera::
flashReady
(
bool
ready
)
Signal the flash ready status has changed.
注意: Notifier signal for property flashReady.
[signal]
void
QCamera::
focusModeChanged
()
Signals when the focusMode 改变。
Returns true if the camera is currently active.
注意: getter 函数对于特性 active .
Returns true if the camera can be used.
[invokable]
bool
QCamera::
isExposureModeSupported
(
QCamera::ExposureMode
mode
) const
Returns true if the exposure mode is supported.
注意: 此函数可以被援引,通过元对象系统和从 QML。见 Q_INVOKABLE .
[invokable]
bool
QCamera::
isFlashModeSupported
(
QCamera::FlashMode
mode
) const
Returns true if the flash mode is supported.
注意: 此函数可以被援引,通过元对象系统和从 QML。见 Q_INVOKABLE .
[invokable]
bool
QCamera::
isFlashReady
() const
Returns true if flash is charged.
注意: 此函数可以被援引,通过元对象系统和从 QML。见 Q_INVOKABLE .
注意: getter 函数对于特性 flashReady .
[invokable]
bool
QCamera::
isFocusModeSupported
(
QCamera::FocusMode
mode
) const
Returns true if the focus mode is supported by the camera.
注意: 此函数可以被援引,通过元对象系统和从 QML。见 Q_INVOKABLE .
[invokable]
bool
QCamera::
isTorchModeSupported
(
QCamera::TorchMode
mode
) const
Returns true if the torch mode is supported.
注意: 此函数可以被援引,通过元对象系统和从 QML。见 Q_INVOKABLE .
[invokable]
bool
QCamera::
isWhiteBalanceModeSupported
(
QCamera::WhiteBalanceMode
mode
) const
Returns true if the white balance mode is supported.
注意: 此函数可以被援引,通过元对象系统和从 QML。见 Q_INVOKABLE .
[signal]
void
QCamera::
isoSensitivityChanged
(
int
value
)
Signal emitted when sensitivity changes to value .
注意: 通知程序信号对于特性 isoSensitivity .
Returns the manual exposure time in seconds, or -1 if the camera is using automatic exposure times.
注意: Getter function for property manualExposureTime.
另请参阅 setManualExposureTime ().
The maximal exposure time in seconds.
Returns the maximum ISO sensitivity supported by the camera.
The minimal exposure time in seconds.
Returns the minimum ISO sensitivity supported by the camera.
[slot]
void
QCamera::
setActive
(
bool
active
)
Turns the camera on if
active
is
true
, or off if it's
false
.
注意: setter 函数对于特性 active .
另请参阅 isActive ().
[slot]
void
QCamera::
setAutoExposureTime
()
Use automatically calculated exposure time
[slot]
void
QCamera::
setAutoIsoSensitivity
()
Turn on auto sensitivity
Connects the camera object to the physical camera device described by cameraDevice . Using a default constructed QCameraDevice object as cameraDevice will connect the camera to the system default camera device.
注意: setter 函数对于特性 cameraDevice .
另请参阅 cameraDevice ().
Tells the camera to use the format described by format . This can be used to define a specific resolution and frame rate to be used for recording and image capture.
注意: When using the FFMPEG backend on an Android target device if you request YUV420P format, you will receive either a fully planar 4:2:0 YUV420P or a semi-planar NV12/NV21. This depends on the codec implemented by the device OEM.
注意: setter 函数对于特性 cameraFormat .
另请参阅 cameraFormat ().
[slot]
void
QCamera::
setColorTemperature
(
int
colorTemperature
)
Sets manual white balance to
colorTemperature
. This is used when
whiteBalanceMode
() 被设为
WhiteBalanceManual
. The units are Kelvin.
Setting a color temperature will only have an effect if WhiteBalanceManual is supported. In this case, setting a temperature greater 0 will automatically set the white balance mode to WhiteBalanceManual . Setting the temperature to 0 will reset the white balance mode to WhiteBalanceAuto .
注意: setter 函数对于特性 colorTemperature .
另请参阅 colorTemperature ().
[slot]
void
QCamera::
setWhiteBalanceMode
(
QCamera::WhiteBalanceMode
mode
)
Sets the white balance to mode .
注意: setter 函数对于特性 whiteBalanceMode .
另请参阅 whiteBalanceMode ().
Zooms to a zoom factor factor at a rate of 1 factor per second.
注意: setter 函数对于特性 zoomFactor .
另请参阅 zoomFactor ().
[slot]
void
QCamera::
start
()
Starts the camera.
如同 setActive (true)。
If the camera can't be started for some reason, the errorOccurred () 信号被发射。
[slot]
void
QCamera::
stop
()
Stops the camera. Same as setActive (false).
[slot]
void
QCamera::
zoomTo
(
float
factor
,
float
rate
)
Zooms to a zoom factor factor 使用 rate .
The rate is specified in powers of two per second. At a rate of 1 it would take 2 seconds to go from a zoom factor of 1 to 4.
注意: Using a specific rate is not supported on all cameras. If not supported, zooming will happen as fast as possible.