2013-10-21 63 views
0

我发现在这个简单的OpenCV的代码中的内存泄漏:内存泄漏在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(),但它没有帮助。删除设置大小的线可以解决问题,但在我的真实代码中,我想改变大小,所以这不是解决方案。它以正确的尺寸获得图像。

我在做一些愚蠢的事情吗?

顺便说一下,我使用的是Logitech B910网络摄像头。

谢谢!

+0

,因为你读有一种静态帧/指向驾驶员记忆,您可以加入您的OS/OpenCV的版本?这可能是一个非常具体的捕获实现的问题 – berak

+0

我使用Ubuntu 12.04的apt-get版本,它是OpenCV 2.3.1。 – CGW

回答

1

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

一旦设定,相机会产生相同的大小,直到你重置

+0

没错。这段代码只是为了演示错误。在我的应用程序中,我希望大部分时间都能看到小图像,然后在其他时间切换到高质量的图像。 – CGW