2017-10-29 8 views
0

QTを使用してイメージをキャプチャしようとしていて、イメージバッファをQBufferクラスのオブジェクトにファイルに保存する代わりに書き込みます。キャプチャバッファQT

これは、これまでの私のコードです:

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

は、それがファイルに保存せずにバッファに画像をキャプチャすることは可能ですか?

+0

ご質問はありますか? – eyllanesc

+0

イメージをファイルに保存せずにバッファに取り込むことはできますか? –

+0

'capture()'または各フレームを使用するときにイメージをキャプチャしますか? – eyllanesc

答えて

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