1

我编写的应用程序的一部分能够从网络摄像头捕获图片。我正在使用带有 QCameraViewfinder 的 QCamera 来显示当前视图,然后当单击快门按钮时,它会拍摄一张带有 QCameraImageCapture 设置为捕获到缓冲区的图片,然后从那里处理它。我刚刚发现它还在本地图片文件夹中保存了图像的副本。为什么会发生这种情况,我该如何阻止它?

4

1 回答 1

2

这只是我的观察点:

根据文档,在您调用后capture,无论目标位置(我的意思是CaptureToFileCaptureToBuffer),图像都会保存到文件中。

请注意以下链接中的此声明:如果传递了一个空文件,则相机后端会为系统上的照片选择默认位置和命名方案。

http://doc.qt.io/qt-5/qcameraimagecapture.html#capture

“CaptureToBuffer”的另一个优点是,您的图像以某种指定的缓冲区格式保存。

我的疯狂猜测,如果他们根本不支持(因为我无法找到任何官方信息)只捕获缓冲,原因可能是,

允许用户使用setBufferFormat. 并且设备可能不支持缓冲区格式(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

}
于 2017-03-30T19:19:00.657 回答