QImageCapture Class

QImageCapture 类用于记录媒体内容。更多

Header: #include <QImageCapture>
CMake: find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake: QT += multimedia
继承: QObject

公共类型

enum Error { NoError, NotReadyError, ResourceError, OutOfSpaceError, NotSupportedFeatureError, FormatError }
enum FileFormat { UnspecifiedFormat, JPEG, PNG, WebP, Tiff }
enum Quality { VeryLowQuality, LowQuality, NormalQuality, HighQuality, VeryHighQuality }

属性

公共功能

QImageCapture(QObject *parent = nullptr)
virtual ~QImageCapture() override
void addMetaData(const QMediaMetaData &metaData)
QMediaCaptureSession *captureSession() const
QImageCapture::Error error() const
QString errorString() const
QImageCapture::FileFormat fileFormat() const
bool isAvailable() const
bool isReadyForCapture() const
QMediaMetaData metaData() const
QImageCapture::Quality quality() const
QSize resolution() const
void setFileFormat(QImageCapture::FileFormat format)
void setMetaData(const QMediaMetaData &metaData)
void setQuality(QImageCapture::Quality quality)
void setResolution(const QSize &resolution)
void setResolution(int width, int height)

公共插槽

int capture()
int captureToFile(const QString &file = QString())

信号

void errorChanged()
void errorOccurred(int id, QImageCapture::Error error, const QString &errorString)
void fileFormatChanged()
void imageAvailable(int id, const QVideoFrame &frame)
void imageCaptured(int id, const QImage &preview)
void imageExposed(int id)
void imageMetadataAvailable(int id, const QMediaMetaData &metaData)
void imageSaved(int id, const QString &fileName)
void metaDataChanged()
void qualityChanged()
void readyForCaptureChanged(bool ready)
void resolutionChanged()

静态公共成员

QString fileFormatDescription(QImageCapture::FileFormat f)
QString fileFormatName(QImageCapture::FileFormat f)
QList<QImageCapture::FileFormat> supportedFormats()

详细说明

QImageCapture 类是一个高级图像记录类。它并不打算单独使用,而是用于访问其他媒体对象的媒体记录功能,如QCamera

QMediaCaptureSession captureSession;
camera = new QCamera;
captureSession.setCamera(camera);

viewfinder = new QVideoWidget();
viewfinder->show();
captureSession.setVideoOutput(viewfinder);

imageCapture = new QImageCapture(camera);
captureSession.setImageCapture(imageCapture);

camera->start();
//on shutter button pressed
imageCapture->capture();

另请参见 QCamera

成员类型文档

enum QImageCapture::Error

常数说明
QImageCapture::NoError0无错误。
QImageCapture::NotReadyError1服务尚未准备好捕获。
QImageCapture::ResourceError2设备未就绪或不可用。
QImageCapture::OutOfSpaceError3设备上没有剩余空间。
QImageCapture::NotSupportedFeatureError4设备不支持静态图像捕捉。
QImageCapture::FormatError5不支持当前格式。

enum QImageCapture::FileFormat

从以下图像格式中选择一种:

常量说明
QImageCapture::UnspecifiedFormat0未指定格式
QImageCapture::JPEG1.jpg 或 格式.jpeg
QImageCapture::PNG2.png 格式
QImageCapture::WebP3.webp 格式
QImageCapture::Tiff4.tiff 格式

enum QImageCapture::Quality

枚举质量编码级别。

常数
QImageCapture::VeryLowQuality0
QImageCapture::LowQuality1
QImageCapture::NormalQuality2
QImageCapture::HighQuality3
QImageCapture::VeryHighQuality4

属性文档

[read-only] error : const Error

返回当前错误状态。

访问功能:

QImageCapture::Error error() const

Notifier 信号:

void errorChanged()

另请参见 errorString().

[read-only] errorString : const QString

返回描述当前错误状态的字符串。

访问功能:

QString errorString() const

Notifier 信号:

void errorChanged()

另请参见 error().

fileFormat : FileFormat

此属性保存图像格式。

访问功能:

QImageCapture::FileFormat fileFormat() const
void setFileFormat(QImageCapture::FileFormat format)

通知信号:

void fileFormatChanged()

metaData : QMediaMetaData

此属性包含将嵌入图像的元数据。

注: 摄像机后端可能会添加时间戳或位置等附加字段。

访问功能:

QMediaMetaData metaData() const
void setMetaData(const QMediaMetaData &metaData)

通知信号:

void metaDataChanged()

quality : Quality

该属性用于保存图像的编码质量。

访问功能:

QImageCapture::Quality quality() const
void setQuality(QImageCapture::Quality quality)

通知信号:

void qualityChanged()

[read-only] readyForCapture : const bool

如果摄像机准备好立即捕捉图像,则保持true 。不允许在readyForCapturefalse 时调用capture() 并会导致错误。

访问功能:

bool isReadyForCapture() const

Notifier 信号:

void readyForCaptureChanged(bool ready)

成员函数 文档

[explicit] QImageCapture::QImageCapture(QObject *parent = nullptr)

通过parent 构建图像捕获对象,该对象可捕获摄像机生成的单个静态图像。

要捕获图像,必须同时将图像捕获对象和QCamera 连接到捕获会话。

[override virtual noexcept] QImageCapture::~QImageCapture()

销毁图像捕捉对象。

void QImageCapture::addMetaData(const QMediaMetaData &metaData)

为任何现有的元数据添加额外的metaData ,这些元数据已嵌入到拍摄的图像中。

[slot] int QImageCapture::capture()

捕获图像并将其作为QImage 提供。此操作在大多数情况下是异步的,随后会发出QImageCapture::imageExposed(),QImageCapture::imageCaptured() 或QImageCapture::error() 信号。

QImageCapture::capture 返回 capture Id 参数,与imageExposed(),imageCaptured() 和imageSaved() 信号一起使用。

另请参阅 isReadyForCapture() 。

QMediaCaptureSession *QImageCapture::captureSession() const

返回此摄像机所连接的捕获会话,如果摄像机未连接捕获会话,则返回 nullptr。

使用QMediaCaptureSession::setImageCapture() 将图像捕捉连接到会话。

[slot] int QImageCapture::captureToFile(const QString &file = QString())

捕捉图像并将其保存到file 。此操作在大多数情况下是异步的,随后会发出QImageCapture::imageExposed(),QImageCapture::imageCaptured(),QImageCapture::imageSaved() 或QImageCapture::error() 信号。

如果传入的是空file ,摄像机后端会选择系统中照片的默认位置和命名方案;如果只指定文件名而不指定完整路径,图像将保存到默认目录,完整路径通过imageCaptured() 和imageSaved() 信号报告。

QCamera 保存所有捕获参数,如曝光设置或图像处理参数,因此调用 () 后更改相机参数不会影响之前的捕获请求。capture

QImageCapture::capture 返回捕捉 Id 参数,与 ()、 () 和 () 信号一起使用。imageExposed imageCaptured imageSaved

另请参阅 isReadyForCapture()。

[signal] void QImageCapture::errorOccurred(int id, QImageCapture::Error error, const QString &errorString)

id 捕捉请求失败的信号,带有errorerrorString 说明。

[static] QString QImageCapture::fileFormatDescription(QImageCapture::FileFormat f)

返回给定文件格式的描述,f

[static] QString QImageCapture::fileFormatName(QImageCapture::FileFormat f)

返回给定格式的名称,f

[signal] void QImageCapture::imageAvailable(int id, const QVideoFrame &frame)

frame 与请求id 可用时发出的信号。

[signal] void QImageCapture::imageCaptured(int id, const QImage &preview)

当请求id 的帧已捕获,但尚未处理和保存时发出的信号。帧preview 可以显示给用户。

[signal] void QImageCapture::imageExposed(int id)

当带有id 请求的帧被暴露时发出的信号。

[signal] void QImageCapture::imageMetadataAvailable(int id, const QMediaMetaData &metaData)

id 识别的图像已metaData 的信号。

[signal] void QImageCapture::imageSaved(int id, const QString &fileName)

当设置了 QImageCapture::CaptureToFile,并将请求id 的帧保存到fileName 时发出的信号。

bool QImageCapture::isAvailable() const

如果图像捕捉服务已准备就绪,则返回 true。

[signal] void QImageCapture::readyForCaptureChanged(bool ready)

摄像机ready 的捕捉状态发生变化的信号。

注: 用于属性readyForCapture 的通知信号。

QSize QImageCapture::resolution() const

返回编码图像的分辨率。

另请参阅 setResolution()。

[signal] void QImageCapture::resolutionChanged()

图像分辨率发生变化时发出信号。

void QImageCapture::setFileFormat(QImageCapture::FileFormat format)

设置图像format

指定不支持的FileFormat 没有效果。

注: 属性fileFormat 的设置函数。

另请参阅 fileFormat() 和supportedFormats

void QImageCapture::setMetaData(const QMediaMetaData &metaData)

用一组metaData 替换要嵌入到捕获图像中的任何现有元数据。

注: metaData 属性的设置函数。

另请参阅 metaData() 。

void QImageCapture::setQuality(QImageCapture::Quality quality)

设置图像编码quality

注: 属性quality 的设置函数。

另请参阅 quality().

void QImageCapture::setResolution(const QSize &resolution)

设置编码图像的resolution

如果QSize 为空,则表示编码器应根据图像源的可用性和编解码器的限制做出最佳选择。

另请参阅 resolution()。

void QImageCapture::setResolution(int width, int height)

设置编码图像分辨率的widthheight

这是一个重载函数。

[static] QList<QImageCapture::FileFormat> QImageCapture::supportedFormats()

返回支持的文件格式列表。

另请参见 FileFormat

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.