使用Python消除视频中的冗余帧

时间:2018-07-31 01:47:01

标签: python opencv video video-capture cv2

我正在研究一个实时问题,我们需要消除视频的冗余帧。(可能是带有歌词的视频) 在我的例子中,歌词视频歌曲,我们不关心音频。仅包含歌词的帧。但问题是两行歌词,我的歌词以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

能否请我帮忙,以便从此处开始消除多余的帧。

2 个答案:

答案 0 :(得分:1)

我很幸运使用pyscene detect删除视频流中的多余帧

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

内容感知检测器

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

这使您可以检测两个都包含内容的场景之间的剪切,而不是大多数传统场景检测方法的工作原理。通过适当设置阈值,该方法甚至可以检测到轻微的突然变化,例如胶卷上的切痕。

答案 1 :(得分:0)

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

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

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

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

希望有帮助。