-2

我想用 C++ 记录相机的帧。相机帧速率不是恒定的,我需要存储每个图像及其时间戳(我使用的是操作系统时钟,并存储图像毫秒精度)。我已经将捕获的图像存储为一系列图像文件,但独立存储的图像(如 .png)太重(因为我正在处理长序列并且它们很多)。因此,我想利用连续图像之间的相似性(作为视频压缩技术)并创建一个利用这一事实的无损视频。然后,我想使用这个视频来单独提取图像,同时保留时间戳。

换句话说,我只使用视频格式来压缩图像序列(不会丢失信息),但我需要跟踪捕获图像时的确切时间戳。

所以我的问题是: 如何以无损格式使用每帧的确切时间戳记录视频中的摄像机流?

我一直在尝试使用 OpenCV 库,尤其是VideoWriter类。但是 VideoWriter 接口不提供任何将帧和时间戳作为输入的方法。

我拥有的另一个选择是将每个帧的时间戳与录制的视频一起存储在单独的 txt 文件中。然后,我可以使用时间戳从视频中检索帧。但是,我不确定我是否会检索确切的帧,这是没有任何信息插值的。

提前致谢

4

1 回答 1

1

格式必须是可移植的吗?

如果没有,这里有一个想法:从一堆图片中交错像素(数量可能会随着时间的推移而变化,具体取决于变化的大小)。

因此,文件中包含 N 张图片的块将包含:

N: the number of pictures in the chunk
timestamp 1: from picture 1
timestamp 2: from picture 2
...
timestamp N: from picture N
pixel 1: from picture 1, pixel 0,0
pixel 2: from picture 2, pixel 0,0
...
pixel N: from picture N, pixel 0,0
pixel N+1: from picture 1, pixel 0,1
pixel N+2: from picture 2, pixel 0,1
...
pixel N*X*Y: from picture N, pixel X-1,Y-1

然后使用无损压缩库压缩块(现在包含 3D 图像)并继续下一个块。

也许已经有能够做类似事情的小波/fft 库了。

于 2018-10-31T13:26:42.090 回答