在内存上写视频OpenCV2

Writing video on memory OpenCV 2

本文关键字:视频 OpenCV2 内存      更新时间:2023-10-16

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

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

我们还使用OpenCV版本2规范。

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

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

但是AFAIK会有一些同步和定时问题,就我使用过的OpenCV而言。

这是OpenCV文档中关于视频i/o的链接。尤其是最后一块代码是您将用于编写的代码。

TL;DR:没有视频,只有序列图像,差别很小。所以你需要这样对待他们。