openCv captureFromCam内存泄漏?

时间:2014-11-17 04:28:24

标签: python python-2.7 opencv memory-leaks memory-profiling

以下是我遇到问题的代码的一部分,memory_profiler跟踪内存使用情况

27   48.500 MiB    0.000 MiB           logging.debug("Initialize camera...")
29   63.996 MiB   15.496 MiB           self.capture = cv.CaptureFromCAM(0)
30   78.102 MiB   14.105 MiB           cv.SetCaptureProperty(self.capture,cv.CV_CAP_PROP_EXPOSURE,self.config.trackExposure)
31   59.551 MiB  -18.551 MiB           del self.capture

创建捕获对象并配置属性使用29.601 MiB的内存。

但是,当我删除self.capture时,它只能回收18.551 MiB。

是否也在cv2中......

28   48.480 MiB    0.000 MiB           logging.debug("Initialize camera...")
30   65.652 MiB   17.172 MiB           self.capture = cv2.VideoCapture(0)
31   77.883 MiB   12.230 MiB           self.capture.set(cv.CV_CAP_PROP_EXPOSURE,self.config.trackExposure)
32   59.332 MiB  -18.551 MiB           self.capture.release()
33   59.332 MiB    0.000 MiB           del self.capture

1 个答案:

答案 0 :(得分:1)

跟进 -

无法找到我的问题的答案,所以现在我的工作是在整个脚本退出之前不释放/删除相机。

似乎有一种记忆税"每次打开和关闭相机时,opencv都不会释放一些内存。

如果缓冲区看起来滞后或者保留旧图像,那么我的修复工作就是去清洁"手动缓存......

for x in range(3):
    garbage = self.capture.QueryFrame()

它并不优雅,但它完成了工作。