我想使用opencv从网络摄像头录制视频。
我将以下代码放在一个定时器事件处理函数中,每个函数调用50毫秒
IplImage *image = cvQueryFrame(camera);
IplImage *resizeImage = cvCreateImage( size, 8, 3);
cvResize(image, resizeImage);
cvWriteFrame(writer, resizeImage );
使用 cvCreateVideoWriter 创建 writer ,并在调用 cvReleaseVideoWriter(& writer)
时创建视频问题是我无法释放 cvWriteFrame 分配的内存,直到调用 cvReleaseVideoWriter 。当我需要录制长时间视频时,这就成了一个大问题。
我该如何处理这种情况?
答案 0 :(得分:0)
我认为在你的情况下(如果你不想修改OpenCV代码)最好的解决方案是写几个视频文件。
正如我可以想象的那样,每个帧都按原样抓取到RAM而不进行任何压缩。因此,您可以在分配的内存量超过特定大小之前计算帧数。然后你完成写入文件并开始一个新文件。