c++ - 捕获到缓冲区 QT

标签 c++ qt camera qbuffer

我正在尝试使用 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();

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

最佳答案

也许是这样的?

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();

关于c++ - 捕获到缓冲区 QT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47002002/

相关文章:

opencv - 如何同步两个 USB 摄像头以将它们用作立体摄像头?

c++ - "Destination address required"尝试通过 SOCK_RAW 套接字发送数据时

c++ - 结合 A* 寻路和点击移动

c++ - 如何将时间和日期转换为C或C++中的句子格式?

c++ - QIdentityProxyModel 显示空行

c++ - 在 QLineEdit 中保存值

c++ - 搜索 vector 成员的前n%个C++

c++ - QSound播放.wav文件时出现意外的null接收器

objective-c - 如何从特定文件夹中读取图像?

ios - 我可以从相机中获得任何有用的信息吗?