0

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

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

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

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

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

我该如何处理这种情况?

4

1 回答 1

0

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

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

于 2013-09-09T11:41:08.967 回答