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

Posted

技术标签:

【中文标题】OpenCV:使用 cvWriteFrame 从网络摄像头写入视频时出现内存泄漏【英文标题】:OpenCV: Memory leak when writing video from webcam using cvWriteFrame 【发布时间】:2013-09-09 11:26:08 【问题描述】:

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

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

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

With writer 是使用 cvCreateVideoWriter 创建的,视频是在我调用 cvReleaseVideoWriter(&writer)

时创建的

问题是在调用 cvReleaseVideoWriter 之前,我无法释放 cvWriteFrame 分配的内存。当我需要录制长时间的视频时,这会成为一个大问题。

我该如何处理这种情况?

【问题讨论】:

【参考方案1】:

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

我可以假设,每一帧都按原样抓取到 RAM 中,没有任何压缩。因此,您可以在分配的内存量超过特定大小之前计算帧数。然后你完成写入文件并开始一个新的。

【讨论】:

以上是关于OpenCV:使用 cvWriteFrame 从网络摄像头写入视频时出现内存泄漏的主要内容,如果未能解决你的问题,请参考以下文章

如何设置代理服务器,从网内访问网外SAP服务器

基于LAMP的个人博客

如何使用opencv实现图像匹配

JIRA 的安装和使用

请问opencv怎么使用多核心啊?

opencv 安装 vc14可以在vs10上运行吗