我编写的应用程序的一部分能够从网络摄像头捕获图片。我正在使用带有 QCameraViewfinder 的 QCamera 来显示当前视图,然后当单击快门按钮时,它会拍摄一张带有 QCameraImageCapture 设置为捕获到缓冲区的图片,然后从那里处理它。我刚刚发现它还在本地图片文件夹中保存了图像的副本。为什么会发生这种情况,我该如何阻止它?
问问题
1549 次
1 回答
2
这只是我的观察点:
根据文档,在您调用后capture
,无论目标位置(我的意思是CaptureToFile
或CaptureToBuffer
),图像都会保存到文件中。
请注意以下链接中的此声明:如果传递了一个空文件,则相机后端会为系统上的照片选择默认位置和命名方案。
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 回答