我在这个简单的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 :(得分:1)
您是否需要更改每帧的读数大小?
设置完成后,相机将生成相同的尺寸,直到您将其重置为止