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 从网络摄像头写入视频时出现内存泄漏的主要内容,如果未能解决你的问题,请参考以下文章