OpenCV:使用cvWriteFrame从网络摄像头写入视频时内存泄漏

时间:2013-09-09 11:26:09

标签: c++ c opencv

我想使用opencv从网络摄像头录制视频。

我将以下代码放在一个定时器事件处理函数中,每个函数调用50毫秒

IplImage *image = cvQueryFrame(camera);
IplImage *resizeImage = cvCreateImage( size, 8, 3);
cvResize(image, resizeImage);
cvWriteFrame(writer, resizeImage );

使用 cvCreateVideoWriter 创建 writer ,并在调用 cvReleaseVideoWriter(& writer)

时创建视频

问题是我无法释放 cvWriteFrame 分配的内存,直到调用 cvReleaseVideoWriter 。当我需要录制长时间视频时,这就成了一个大问题。

我该如何处理这种情况?

1 个答案:

答案 0 :(得分:0)

我认为在你的情况下(如果你不想修改OpenCV代码)最好的解决方案是写几个视频文件。

正如我可以想象的那样,每个帧都按原样抓取到RAM而不进行任何压缩。因此,您可以在分配的内存量超过特定大小之前计算帧数。然后你完成写入文件并开始一个新文件。