【问题标题】:Memory Leak in OpenCV Set SizeOpenCV 集大小中的内存泄漏
【发布时间】:2013-10-21 17:59:20
【问题描述】:

我在这个简单的 OpenCV 代码中发现了内存泄漏:

VideoCapture* capture = new VideoCapture(0);
Mat frame;
while (true) {
    capture->set( CV_CAP_PROP_FRAME_WIDTH, 1600 );
    capture->set(CV_CAP_PROP_FRAME_HEIGHT, 1200 );
    capture->read(frame);
}

这是整个代码。每次通过 while 循环,都会泄漏几 MB。我在阅读后尝试了 frame.release() ,但没有帮助。删除 set-size 行可以解决问题,但在我的真实代码中,我想改变大小,所以这不是解决方案。它正在以正确的大小获取图像。

我在做傻事吗?

顺便说一句,我使用的是罗技 B910 网络摄像头。

谢谢!

【问题讨论】:

  • 因为你读到的帧有一种静态/指向驱动程序内存,你能添加你的 os / opencv 版本吗?这可能是一个非常具体的捕获实现的问题
  • 我使用的是 Ubuntu 12.04 的 apt-get 版本,即 OpenCV 2.3.1。

标签: c++ opencv memory-leaks


【解决方案1】:

您需要更改每一帧的读数大小吗?

设置后,相机将产生相同的尺寸,直到您重置它

【讨论】:

  • 对。这段代码只是为了演示这个错误。在我的应用程序中,我希望大部分时间获得小图像,然后在其他时间切换到高质量图像。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-15
  • 1970-01-01
  • 1970-01-01
  • 2014-03-01
  • 2015-10-05
  • 2015-12-05
  • 2018-05-20
相关资源
最近更新 更多