【问题标题】:Eliminating redundant frames in a video using Python使用 Python 消除视频中的冗余帧
【发布时间】:2019-01-07 07:40:17
【问题描述】:

我正在研究一个实时问题,我们需要消除视频的冗余帧。(可能是带有歌曲歌词的视频) 在我的例子中,歌词视频歌曲,我们不关心音频。只有包含歌词的帧。但问题是两行歌词我最终用了 20 秒结束了多个帧具有相同的歌词。所以我对消除那些多余的帧很感兴趣。

在搜索时,我发现此代码可通过此代码从视频中提取帧 - Python - Extracting and Saving Video Frames

 import cv2
 vidcap = cv2.VideoCapture('Compton.mp4')
 success,image = vidcap.read()
 count = 0
 success = True
 while success:
 success,image = vidcap.read()
 cv2.imwrite("frame%d.jpg" % count, image)     # save frame as JPEG file
 if cv2.waitKey(10) == 27:                     # exit if Escape is hit
  break
 count += 1

能否请您帮我从这里开始消除多余的帧。

【问题讨论】:

    标签: python opencv video video-capture cv2


    【解决方案1】:

    我在使用 pyscene detect 删除视频流中的冗余帧方面取得了一些运气

    我将添加您可能会感兴趣的relevant method -

    内容感知检测器

    内容感知场景检测器 (-d content) 的工作方式与大多数人认为的电影中场景之间的“剪辑”相同 - 给定两个帧,它们属于同一场景还是不同的场景?内容感知场景检测器会发现两个后续帧之间的差异超过设置的阈值的区域(一个好的开始值是 --threshold 30)。

    这允许您检测包含内容的场景之间的剪辑,而不是大多数传统场景检测方法的工作方式。通过适当设置阈值,此方法甚至可以检测到细微的突然变化,例如电影中的跳切。

    【讨论】:

      【解决方案2】:

      如果您只需要帧(jpegs),那么您可以使用 ffmpeg 视频过滤器选项并以给定的帧速率(fps)提取帧

      ffmpeg -i "Compton.mp4" -vf fps=1 frame%04d.jpg -hide_banner

      这将每秒提取一帧。您可以根据视频中歌词更改的频率对其进行调整。

      如果你想在 python 中使用它,那么ffmpeg-python 是一个很棒的工具。

      希望对你有帮助。

      【讨论】:

      • 我不想手动设置取帧频率,因为每首歌都会有不同的,对吧?相反,我认为我可以有一个代码来对生成的帧进行一些比较。 (我希望我的意图是正确的)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-13
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多