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

OpenCV: Memory leak when writing video from webcam using cvWriteFrame

本文关键字:视频 内存 泄漏 摄像头 使用 cvWriteFrame 网络 OpenCV      更新时间:2023-10-16

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

我将以下代码放入计时器事件处理程序函数中,该函数每 50 毫秒调用一次

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

使用cvCreateVideoWriter创建writer,当我调用cvReleaseVideoWriter(&writer)时创建视频

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

我该如何处理这种情况?

我想在您

的情况下(如果您不想修改 OpenCV 代码)的最佳解决方案是编写多个视频文件。

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