在内存OpenCV 2上写视频

时间:2012-09-03 09:51:27

标签: c++ opencv

我们目前正在为需要OpenCV的程序开发一些功能。摆在桌面上的一个想法是使用"缓冲区"这会将一分钟的视频数据保存到内存中,然后我们需要从每个事件触发器的缓冲区中提取13秒的视频文件。

目前我们没有足够的OpenCV经验,所以我们不知道是否可能。查看文档,在内存中写入的唯一允许函数是imencode和imdecode,但这些是图像。如果我们能找到一种方法将图像序列写入一个整洁的视频文件,但现在我们的想法是使用视频缓冲区。

我们也使用OpenCV第2版规范。

TL; DR我们想知道是否可以将一部分视频写入内存。

1 个答案:

答案 0 :(得分:1)

在OpenCV中,每个视频都被视为一组帧(图像)。根据相机的FPS,您可以定期捕捉帧并用它们填充缓冲区。同时你可以摧毁最旧的帧(在1分钟之前拍摄)。因此,可以实现FIFO数据结构来实现您的目标。获得13秒的样本很简单,只需跳转到随机帧并按顺序将13 * FPS帧写入视频文件。

但是AFAIK会有一些同步和计时问题,而且我使用的是OpenCV。

Here是关于视频i / o的OpenCV文档的链接。特别是最后一段代码是您将用于编写的内容。

TL; DR:没有视频,有连续图像,差别不大。所以你需要这样对待它们。