图像捕获QImageCapture
用媒体捕获器QMediaCaptureSession的 setImageCapture(imageCapture:QImageCapture)方法将 QImageCapture 与 QMediaCatureSession 关联,可以捕获图像,实现拍照功能。
用QImageCapture类定义图像捕的方法如下所示
from PySide6.QtMultimedia import QImageCapture
QImageCapture(parent: Union[PySide6.QtCore.QObject,NoneType]= None)-> None
图像捕获 QImageCapture 的常用方法
图像捕获 QImageCapture 的常用方法如表所示,主要方法介绍如下
-
当isReadyForCapture()的返回值是 True 时,可以进行拍照;
-
用capture()方法进行拍照,返回值是拍照的识别号ID
- 同时会发送imageCaptured(id;int,preview:QImage)信号和 imageExposed(id:int)信号,可以获取拍摄的图像;
-
用captureToFile(location:str=)方法直接将拍摄的图像保存到文件中,
- 同时发送imageCaptured(id;int,preview; QImage)信号、imageExposed(id;int)信号和imageSaved(id;int,fileName:str)信号
- 如果没有给出保存的文件名和路径则使用默认的路径和文件名,如果只给出文件名,则保存到默认路径下
- 完整路径可以通过imageSaved(id:int,fileName:str)信号的参数获取。
-
用error()方法获取拍照时的出错状态返回值是QImageCapture.Error 举值可取以下值,对应值分别是0~5,用errorString()方法获取出错信息。:
- QImageCapture.NoError
- QImageCapture.notReadyError(设备没准备好)
- QImageCapture.ResourceError(设备没准备好或不可用)
- QImageCapture.OutOfSpaceError(存储空间不够)
- QImageCapture,notSupportedFeatureError(设备不支持拍照)
- QImageCapture.FormatError(格式出错)
-
用setFileFormat(format: QImageCapture,FileFormat)方法设置拍照的格式,参数是QImageCapture,FileFormat 的枚举值,可取:
- QImageCapture.FileFormat.JPEG
- QImageCapture.FileFormat.PNG
- QImageCapture.FileFormat.Tiff
- QImageCapture.FileFormat.WebP
- QImageCapture.FileFormat.UnspecifiedFormat
- QImageCapture.FileFormat.LastFileFormat
-
用setQuality(quality: QImageCapture.Quality)方法设置图像质量,参数是QImageCapture.Quality 的举值,可取以下值,=对应值分别是0~4:
- QImageCapture.VeryLowQuality
- QImageCapture.LowQuality
- QImageCapture.NormalQuality
- QImageCapture.HighQuality
- QImageCapture.VeryHighQuality
QImageCapture的方法及参数类型 | 返回值的类型 | 说明 |
---|---|---|
isReadyForCapture() | bool | 获取是否可以拍照 |
[slot]capture() | int | 进行拍照 |
[slot]captureToFile(location:str=‘’) | int | 拍照到文件中 |
captureSession() | QMediaCaptureSession | 获取关联的捕捉器 |
error() | QImageCapture.Error | 获取出错状态 |
errorString() | str | 获取出错信息 |
setFileFormat(QImageCapture.FileFormat) | None | 设置文件格式 |
setMetaData(metaData:QMediaMetaData) | None | 设置元数据 |
metaData() | QMediaMetaData | 获取元数据 |
addMetaData(metaData:QMediaMetaData) | None | 添加元数据 |
setQuality(quality:QImageCapture.Quality) | None | 设置图像质量 |
quality() | QImageCapture.Quality | 获取图像质量 |
setResolution(QSize) | None | 设置分辨率 |
setResolution(width:int,height:int) | None | |
resolution() | QSize | 获取分辨率 |
[static]fileFormatDescription(QImageCapture.FileFormat) | Str | 获取格式的信息 |
[static]fileFormatName(QImageCapture.FileFormat) | str | 获取格式的名称 |
[static]supportedFormats() | List[QlmageCapture.FileFormat] | 获取支持的格式 |
图像捕获QImageCapture 的信号
图像捕获 QImageCapture 的信号如表所示
其中imageAvailable(id:int,frame:QVideoFrame)信号的参数 QVideoFrame是视频,利用QVideoFrame 的 toImage()方法可以得到 QImage。
QImageCapture的信号及参数类型 | 说 明 |
---|---|
readyForCaptureChanged(ready:bool) | 准备状态发生改变时发送信号 |
imageCaptured(id: int,preview: QImage) | 捕捉到图像时发送信号 |
imageExposed(id:int) | 图像曝光时发送信号 |
imageSaved(id: int,fileName: str) | 保存图像时发送信号 |
imageAvailable(id: int,frame: QVideoFrame) | 可以获取图像时发送信号 |
metaDataChanged() | 元数据发生改变时发送信号 |
qualityChanged() | 图像质量发生改变时发送信号 |
errorOccurred(id:int,error: QImageCapture.Error,errorString:str) | 出现错误时发送信号 |
errorChanged() | 错误状态发生改变时发送信号 |
fileFormatChanged() | 文件格式发生改变时发送信号 |