我编写的应用程序的一部分能够从网络摄像头捕获图片。我正在使用QCamera和QCameraViewfinder来显示当前视图,然后当单击一个快门按钮时,它会捕捉一张QCameraImageCapture设置的图片以捕获缓冲区,然后从那里处理它。我刚刚发现它还在本地Pictures文件夹中保存了一个图像副本。为什么会这样,我怎么能阻止它?
答案 0 :(得分:1)
这只是我的观察点:
根据文档,在您致电capture
后,无论目的地位置(我的意思是CaptureToFile
还是CaptureToBuffer
),图片都会保存到文件中。
请注意以下链接中的状态:如果传递空文件,则相机后端会选择系统上照片的默认位置和命名方案。
http://doc.qt.io/qt-5/qcameraimagecapture.html#capture
使用" CaptureToBuffer"的额外优势,您的图像以某种指定的缓冲区格式保存。
我疯狂猜测,如果他们不支持(因为我无法找到任何关于它的官方信息),只能捕获到缓冲区, 原因可能是,
允许用户使用setBufferFormat
设置bufferformat。并且设备可能不支持缓冲区格式(isCaptureDestinationSupported()用于检查它。)。可能是因为他们总是保存到本地图片文件夹。
如果capture
无法避免此保存,并且您的企业严格需要不维护这些已保存的文件,当您的缓冲区运行良好时,可能你可以在下面的插槽中删除它们。
QObject::connect(YOURCAMERACAPTUREOBJECT, SIGNAL(imageSaved), this,SLOT(saved(int id, const QString &fileName)));
void saved(int id, const QString &fileName)
{
//Delete the file by checking you have content in buffer.
//to check the buffer probably you can use "imageAvailable" signal
}