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

如何利用 ffmpeg 从视频流中提取关键帧并仅打印这些帧中存在的标签?

如何解决如何利用 ffmpeg 从视频流中提取关键帧并仅打印这些帧中存在的标签?

关于上下文,我将 TensorFlow 对象检测 API 用于一个项目,并且我修改了可视化_utils 文件以将任何现有的类标签打印到终端,然后将它们写入 .txt 文件。通过一些研究,我遇到了 FFmpeg,我想知道是否有一个函数可以在 FFmpeg 中使用,以便它只打印和写入视频中关键帧的类标签? - 即当视频发生变化时。目前,即使没有变化,它也会每帧打印所有类标签,所以即使视频中没有新对象,我也会有重复的标签数量。继此之后,我是否必须事先将此关键帧过滤应用于输入视频?

提前致谢!

我正在使用 opencv2 来捕获我的视频输入。

请参阅下面的代码

visualization_utils.py - 在 draw_bounding_Box_on_image_array 函数内部:

# Write video output to file for evaluation.

  f = open("ObjDecOutput.txt","a")
  print(display_str_list[0])
  f.write(display_str_list[0])

解决方法

我以为我只是跟进这个,我最终使用 ffmpeg mpdecimate 和 setpts 过滤器来删除重复和相似的帧。

ffmpeg -i example.mp4 -vf mpdecimate=frac=1,setpts=N/FRAME_RATE/TB  example_decimated.mp4

然而,这并没有解决我正在写入标签的文件中的重复问题 - 为了解决这个问题,我将文件中的每一行附加到一个列表中并循环遍历它以删除重复元素组并只保留第一次出现并将其附加到新列表中。

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