【发布时间】: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