【问题标题】:Delete captured image in imageCapture of QML Camera删除 QML Camera 的 imageCapture 中捕获的图像
【发布时间】:2016-10-03 09:58:10
【问题描述】:

我正在开发一个图像处理应用程序并使用此代码

Camera {
    id: cam
    viewfinder.resolution: "640x480"
    viewfinder.minimumFrameRate: 5
    captureMode: Camera.CaptureStillImage
    imageCapture {
        resolution: "640x480"
        onReadyChanged: {
            imageDecoder.reset()  // my decoder class
            cam.imageCapture.capture()
        }
        onImageCaptured: {
            console.log(requestId, preview)
            imageDecoder.decodeQmlPreview(preview)
        }
    }
    imageProcessing {
        contrast: 0.60
    }
}


VideoOutput {
    id: output
    fillMode: VideoOutput.PreserveAspectCrop
    anchors.fill: parent
    source: cam        
}

我看到所有这些捕获的图像 (preview) 都存储在硬盘上,并且永远不会被删除。如何删除这些图像?我的可用硬盘空间非常有限。

# ls -lh | grep IMG
-rw-r--r--    1 root     root       10.5K Jan  1 00:40 IMG_00000001.jpg
-rw-r--r--    1 root     root       12.2K Jan  1 00:45 IMG_00000002.jpg
-rw-r--r--    1 root     root       15.6K Jan  1 00:48 IMG_00000003.jpg
-rw-r--r--    1 root     root       15.6K Jan  1 00:49 IMG_00000004.jpg
-rw-r--r--    1 root     root       11.4K Jan  1 01:05 IMG_00000005.jpg

【问题讨论】:

  • 你确定这些来自你的qml吗?你是怎么隔离的?\
  • @KubaOber 他们确实匹配视频输出显示。我删除了所有这些文件并重新运行了该应用程序。文件数与我处理的图像数相匹配。
  • 我认为这是一个 Qt 错误,那么,只要您显示的代码是完整的。如果是这样,请提交错误报告。
  • 并不是说它会有很多好处。正确的做法是专注于寻找解决方法,直到错误得到修复,这可能需要数年时间。

标签: qt qml


【解决方案1】:

QML 与 FS 有相当隐含的关系 - 它的内部功能会读取,有时会写入,但它似乎没有定义的 API 供用户直接与 FS 交互。

这意味着您必须在 C++ 中实现该功能,并将其公开给 QML。

我的做法是创建一个class System : public QObject并将所有必要的东西放入其中,然后在main.cpp中:

  System s(&engine);
  engine.rootContext()->setContextProperty("Sys", &s);

然后从 QML 你可以简单地Sys.doYourStuff()。在您的情况下,您需要静态函数 bool QFile::remove(const QString &fileName)

【讨论】:

  • 谢谢,如何从QUrl又名preview找到FS上的实际文件名?
  • 命名方案是统一的,所以你可以去那里删除每次预览时创建的图像。调查命名行为如何在文件被删除时起作用。您可能必须在 QML 代码中放置一个计数器来跟踪您应该删除哪个文件。
猜你喜欢
  • 1970-01-01
  • 2012-08-15
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多