Camera
ImportStatement: import QtMultimedia 5.0
Inherits: Item
Properties
availability: enumeration
cameraState: enumeration
cameraStatus: enumeration
captureMode: enumeration
digitalZoom: real
errorCode :enumeration
errorString: string
lockStatus :enumeration
maximumDigitalZoom: real
maximumOpticalZoom: real
mediaObject: variant
opticalZoom: real
Signals
digitalZoomChanged(zoom)
error(errorCode,errorString)
lockStatusChanged()
manualWhiteBalanceChanged(qreal)
maximumDigitalZoomChanged(zoom)
maximumOpticalZoomChanged(zoom)
opticalZoomChanged(zoom)
stateChanged(state)
whiteBalanceModeChanged(Camera::WhiteBalanceMode)
Methods
searchAndLock()
start()
stop()
unlock()
DetailedDescription
Camera是QtMultimedia 5.0模块的一部分。
我们能用Camera从摄像头上捕捉图片和电影。可以操作捕捉和设置参数到图像上。我们能用VideoOutput显示捕捉的画面,需要设置Camera为VideoOutput的源。
示例如下:
importQtQuick 2.0
importQtMultimedia 5.0
Item {
width: 640
height: 360
Camera {
id: camera
imageProcessing.whiteBalanceMode:CameraImageProcessing.WhiteBalanceFlash
exposure {
exposureCompensation: -1.0
exposureMode:Camera.ExposurePortrait
}
flash.mode: Camera.FlashRedEyeReduction
imageCapture {
onImageCaptured: {
photoPreview.source =preview // Show the preview in an Image
}
}
}
VideoOutput {
source: camera
anchors.fill: parent
focus : visible // to receive focus andcapture key events when visible
}
Image {
id: photoPreview
}
}
Camera的不同设置和功能栈被分布在Camera的不同子属性中。
属性 | 描述 |
imageCapture | 捕捉图片的方法和属性。 |
videoRecording | 捕捉电影的方法和属性。 |
exposure | 调整曝光的方法和属性。(光圈、快门速度等) |
focus | 调整对焦的方法和属性;提供自动对焦的反馈。 |
flash | 控制闪光灯的方法和属性。 |
imageProcessing | 调整图像处理参数的方法和属性。 |
基本的相机状态管理,错误报告和简单的缩放控制,Camera自身的属性足以支持。另外,我们可以使用mediaObject属性扩展标准的Qt Multimedia相机控制接口。
相机的许多设置值需要一些时间才能有效应用,有些值可能还存在限制,这些都取决于相机的硬件。一些相机可以设置成手动或自动。这些设置属性包含当前设置值。例如,当自动对焦被打开,焦点区域就暴露在焦点属性中。
PropertyDocumentation
availability: enumeration
相机的可用性。它是下面值中的一个。
值 | 描述 |
Available | 相机可用 |
Busy | 相机属于另一个进程,处于忙状态。 |
Unavailable | 相机不可用(可能没有相机的硬件) |
ResourceMissing | 相机因为缺少资源,不可用,可稍后在试。 |
cameraState: enumeration
相机的当前状态,可能是下面的属性之一:
值 | 描述 |
UnloadedState | 相机的初始状态,相机没有加载。除了捕捉功能,相机的其他功能未知。基本上是上电后的状态,准备开始捕捉需要花费最长的时间。 在这个状态,支持的设置未知。但我们还能为捕捉设置编解码器,分辨率和帧率。 |
LoadedState | 相机被加载并准备配置。在空闲时,我们可以查询相机的功能,设置捕捉的分辨率,编解码器等等。在这个状态,取景器没有被激活。 |
ActiveState | 在这个状态,取景器已经被激活,相机已经为捕捉做好准备。 |
默认相机状态是ActiveState。
cameraStatus: enumeration
相机当前的状况,它是下面的其中一个值:
值 | 描述 |
ActiveStatus | 相机已经启动,可以产生数据,取景器显示视频帧。依赖于后端,在ActiveState状态改变相机的设置(诸如捕捉模式,编解码器,分辨率),可能改变cameraStatus 到LoadedStatus和StartingStatus。当设置被应用,相机准备好时,cameraStatus回到ActiveStatus。 |
StartingStatus | 相机开始过渡到Camera.ActiveState。此时相机还没有准备捕捉数据。 |
StoppingStatus | 相机正处于从Camera.ActiveState过渡到Camera.LoadedState或Camera.UnloadedState。 |
StandbyStatus | 相机在一段时间不活动后,进入Camera.LoadedState的节能待机模式的状态。 |
LoadedStatus | 相机被加载,准备被设置。这个状况指明了相机设备被打开,能够查询支持的图片和影片的捕捉设置。(诸如分辨率、帧率、编解码器) |
LoadingStatus | 相机正处于Camera.UnloadedState到Camera.LoadedState或Camera.ActiveState的过渡中。 |
UnloadingStatus | 相机正处于从Camera.LoadedState或Camera.ActiveState过渡到Camera.UnloadedState中。 |
UnloadedStatus | 相机一开始的状况,相机没有加载。相机支持的功能,包括捕捉设置为未知。 |
UnavailableStatus | 相机或相机后端不可用。 |
captureMode: enumeration
相机的捕捉模式,它是下面的其中一个值:
值 | 描述 |
CaptureViewfinder | 相机仅仅设置在取景器显示。 |
CaptureStillImage | 相机捕捉图片。 |
CaptureVideo | 相机捕捉视频。 |
digitalZoom: real
当前的数字变焦。
errorCode :enumeration
最后的错误码。
errorString: string
最后的错误的详细信息。
lockStatus :enumeration
相机针对所有请求的状态。属性是下面的一个值。
值 | 描述 |
Unlocked | 应用对相机设置没有兴趣。相机保持同样的参数不变。大家使用共同的焦距,曝光调节,白平衡设置,保证取景器的图像是优质的。 |
Searching | 应用请求设置相机聚焦,曝光和白平衡。searchAndLock()启动,这个状态指明相机正在聚焦或计算曝光和白平衡。 |
Locked | 相机的焦距,曝光和白平衡被锁定。相机准备捕捉数据。应用可以检查曝光参数。锁状态意味着请求的参数将保持不变,除非再次请求更新参数。例如在连续聚焦状态,焦距被锁定。即使实际焦距变化,参数也不改变。 |
maximumDigitalZoom: real
支持的最大数码变焦。如果不支持数码变焦,此属性为1.0。
maximumOpticalZoom: real
支持的最大光学变焦,如果不支持光学变焦,此属性为1.0。
mediaObject: variant
相机的媒体对象。
opticalZoom: real
当前的光学变焦。
SignalDocumentation
digitalZoomChanged(zoom)
当数码变焦设置值变化时,发送这个信号。
error(errorCode,errorString)
当错误发生,这个信号被发射。errorCode是下面的一个值。错误可利用的描述在errorString中。
值 | 描述 |
NoError | 没有错误发生 |
CameraError | 有错误 |
InvalidRequestError | 系统不支持请求的功能 |
ServiceMissingError | 没有相机服务可用 |
NotSupportedFeatureError | 不支持的特征 |
lockStatusChanged()
当锁状态变化时,发送这个信号。这发生在锁(例如自动变焦)完成或失败。
manualWhiteBalanceChanged(qreal)
当manualWhiteBalance属性变化时,发送这个信号。
maximumDigitalZoomChanged(zoom)
最大数字对焦改变,将发射这个信号。这一般发生在我们在图片和影片之间改变捕捉模式或改变捕捉设置时。
maximumOpticalZoomChanged(zoom)
当最大光学对焦发生变化时,发送这个信号。这一般发生在我们在图片和影片之间改变捕捉模式或改变捕捉设置时。
opticalZoomChanged(zoom)
当光学对焦发生变化时,发送这个信号。
stateChanged(state)
当相机状态发生变化时,发送这个信号。状态变化需要花一些时间,所以这个信号可能在请求发生后的某个时刻抵达。
whiteBalanceModeChanged(Camera::WhiteBalanceMode)
当whiteBalanceMode属性发生变化时,发送这个信号。
MethodDocumentation
searchAndLock()
开始焦距、曝光和白平衡的计算。这用于相机的焦距按钮被按下或相机的捕捉按钮半按。如果相机支持自动对焦,焦点区域可以通过focus属性获得。
start()
启动相机,取景帧可用,图片或电影可以被捕捉。
stop()
停止相机,但不处理相机栈
unlock()
解锁焦距,曝光和白平衡锁。