捕获到缓冲 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的主要内容,如果未能解决你的问题,请参考以下文章