繁体   English   中英

openCv captureFromCam内存泄漏?

[英]openCv captureFromCam memory leak?

这是我遇到问题的部分代码,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

跟进 -

找不到我的问题的答案,因此,现在我的解决方法是在整个脚本退出之前不要释放/删除相机。

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

如果您回到缓冲区时似乎缓冲区滞后或保留旧图像,则我的解决方法是手动“清理”缓存...

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

它不是很优雅,但是可以完成工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM