捕获到缓冲 QT

Posted

技术标签:

【中文标题】捕获到缓冲 QT【英文标题】:Capture To Buffer QT 【发布时间】:2017-10-29 15:34:53 【问题描述】:

我正在尝试使用 QT 捕获图像,并将图像缓冲区写入 QBuffer 类的对象,而不是将其保存到文件中。

这是我目前的代码:

mBuffer->open(QBuffer::ReadWrite);
mCameraImageCapture->setCaptureDestination(QCameraImageCapture::CaptureToBuffer);
QImageEncoderSettings imageEncoderSettings;
imageEncoderSettings.setCodec("image/BMP");
mCameraImageCapture->setEncodingSettings(imageEncoderSettings);
mCamera->setCaptureMode(QCamera :: CaptureStillImage);
mCamera->start();
mCamera->searchAndLock();
mCamera->unlock();
mBuffer->close();

是否可以将图像捕获到缓冲区而不将其保存到文件中?

【问题讨论】:

你的问题是什么? 是否可以将图像捕获到缓冲区而不保存到文件中? 你是想在使用capture()的时候还是每帧抓图? 当我使用 capture() 时 【参考方案1】:

也许是这样的?

QApplication app(argc, argv);
QCamera *cam = new QCamera;

cam->setCaptureMode(QCamera::CaptureStillImage);

QCameraViewfinder *viewfinder = new QCameraViewfinder;

viewfinder->show();

QCameraImageCapture *cap = new QCameraImageCapture(cam);
cap->setCaptureDestination(QCameraImageCapture::CaptureToBuffer);

cam->setViewfinder(viewfinder);

QObject::connect(cap, &QCameraImageCapture::imageCaptured, [=] (int id, QImage img) 
    QByteArray buf;
    QBuffer buffer(&buf);
    buffer.open(QIODevice::WriteOnly);
    img.save(&buffer, "PNG");
);

QObject::connect(cap, &QCameraImageCapture::readyForCaptureChanged, [=] (bool state) 
   if(state == true) 
       cam->searchAndLock();
       cap->capture();
       cam->unlock();
   
);

cam->start();

app.exec();

【讨论】:

以上是关于捕获到缓冲 QT的主要内容,如果未能解决你的问题,请参考以下文章

如何捕获 QML 绘图缓冲区

在 Cocoa 中捕获音频缓冲区

正则表达式中的捕获和非捕获

如何捕获麦克风缓冲区

Qt5 信号捕获到插槽生成运行时错误“信号不存在”

Qt5.5下捕获一个带有OpenGL内容的Widget