我正在将视频转换成python3.6中的图像(即剪切视频以获取图像)。
我有两种类型的视频,第一种是RGB视频,其帧速率为 30 (即fps= 30),其帧速率为30(即fps=30);第二种是由Flir摄像机录制的热红外视频,其帧速率的E 1109E 211(最初是一个帧流文件,我将其转换为图像,并使用python3-cv2将其转换为9 fps的视频)。视频格式分别是mp4和avi (虽然我已经将avi转换为mp4并进行了测试)。它们的长度是相等的。
我正在尝试创建一个匹配的图像对从热和红外视频。然而,当我似乎使用相同的帧速率削减他们,似乎他们不匹配(但不同的5-6图像)。
我有大约200个ish视频,所以这是非常耗费时间和我很难找到他们一个一个。
关于如何使这个数据集成为成对的数据集,有什么想法吗?
非常感谢
发布于 2021-01-08 01:07:09
您可以通过匹配两个视频的时间戳,将30 fps视频重新创建为匹配的9 fps视频。OpenCV允许您在VideoWriter中指定框架(我认为您知道这一点,但只是为了确保)。OpenCV报告当前视频的时间戳
cv2.VideoCapture.get(cv2.CAP_PROP_POS_MSEC);从FLIR相机抓取一个帧和时间戳,然后继续从彩色相机抓取帧和时间戳,直到时间戳赶上或通过FLIR时间戳为止。然后将颜色框写到vidwriter上。只要这两个视频都有一个一致的框架,他们都开始/停止录制在同一时间,那么这将看到这两个视频匹配尽可能密切。
发布于 2021-01-12 19:20:14
如果在文件列表上使用一个简单的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 vs9fps是一个令人讨厌的组合,但会有一个倾斜,我不确定确切的转换算法(一些混合可能更好,因为倾斜的帧与大的时间错配)。
如果第二个视频是在5,10或15 fps录制的话,那就更好了。
https://stackoverflow.com/questions/65595629
复制相似问题