QT: захват в буфер без сохранения в файл

В моем проекте я делаю снимок в буфер, используя QCameraImageCapture::CaptureToBuffer, Но это также сохраняет изображения в файл. Так как я планирую снимать изображения непрерывно, я хочу предотвратить сохранение изображений в файл. Вот мой код:

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
   ui(new Ui::MainWindow)
{
ui->setupUi(this);
scene = new QGraphicsScene(this);
ui->graphicsView->setScene(scene);
cam = new QCamera;
cam->setCaptureMode(QCamera::CaptureStillImage);

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, "BMP");


});

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

}

1 ответ

Это зависит от бэкенда QCamera. Я считаю, что ошибка, которую вы описываете, существует в плагине GStreamer camerabin. Когда вы смотрите на https://code.qt.io/cgit/qt/qtmultimedia.git/tree/src/plugins/gstreamer/camerabin/camerabinsession.cpp?h=5.15#n587 m_imageFileNameнастраивается независимо от места назначения захвата. Файл сохраняется этим фильтром, затем https://code.qt.io/cgit/qt/qtmultimedia.git/tree/src/plugins/gstreamer/mediacapture/qgstreamercapturesession.cpp?h=5.15#n404

редактировать: эта ошибка, кажется, исправлена ​​​​в Qt 5.15

Другие вопросы по тегам