微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从具有两种不同帧率的视频中获取匹配的图像帧

如何解决从具有两种不同帧率的视频中获取匹配的图像帧

我正在python3.6中将视频转换为图像(即剪切视频以获取图像)

我有两种类型的视频 第一个是从 Real sense D435i 录制的 RGB 视频帧速率 30(即 fps= 30) 第二个是从 Flir Adas 相机录制的热红外视频,帧率9(它最初是一个帧流文件,我将其转换为图像并使用 python3-cv2 将其制成 fps 为 9 的视频)。 视频格式分别为 mp4 和 avi(尽管我已将 avi 转换为 mp4 并对其进行了测试)。 它们的长度相等。

我正在尝试从热视频和红外视频创建一个匹配的图像对。但是,当我似乎使用相同的帧速率剪切它们时,它们似乎不匹配(但相差 5-6 个图像)。

我有大约 200 个 ish 视频,因此我很难逐个追踪它们。

关于如何获取此数据集以使其成为配对数据集的任何想法?

非常感谢

解决方法

通过匹配两个视频的时间戳,您或许能够将 30 fps 视频重新创建为匹配的 9 fps 视频。 OpenCV 允许您在 VideoWriter 中指定帧速率(我想您知道这一点,但可以肯定)。 OpenCV 报告当前视频的时间戳

cv2.VideoCapture.get(cv2.CAP_PROP_POS_MSEC);

从 FLIR 相机抓取一帧和时间戳,然后继续从彩色相机抓取帧和时间戳,直到时间戳赶上或超过 FLIR 时间戳。然后将色框写入视频写入器。只要两个视频的帧率一致并且同时开始/停止录制,那么这应该会看到两个视频尽可能匹配。

,

使用简单的 ffmpeg 脚本在文件列表上将 9 fps 视频转换为 30 fps 怎么样:

ffmpeg -i source9fps.mp4 -r 30 -c:v libx264 -c:b 10M out30fps.mp4

#-c:b ... bitrate

or:

ffmpeg -i source9fps.mp4 -r 30 -c:v copy out30fps.mp4

(Without reencoding,very fast)

30 与 9 fps 是一个令人讨厌的组合,但会出现偏差,而且我不确定确切的转换算法(由于时间不匹配的帧的偏差,某些混合可能会更好)。>

如果以 5、10 或 15 fps 录制第二个视频会更好。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。