【问题标题】:How to extract slides from a video using python如何使用python从视频中提取幻灯片
【发布时间】:2012-08-23 21:15:25
【问题描述】:

我有一个以 AVI 文件形式提供的视频培训课程。大多数屏幕显示为幻灯片,鼠标指针在其上移动。

我想在屏幕变化时自动截取幻灯片的屏幕截图(忽略由于鼠标指针四处移动而导致图像发生少量变化的情况。)

我想这样做,以便我可以将图像粘贴到 word 或 html 文档中,我可以在学习时添加注释,因为我正在截屏,但它非常缓慢和乏味,而且课程很长(大约 24 小时的总播放时间)。

我很了解 python,但我不确定如何从视频文件中提取静止图像,然后如何将一个静止图像与另一个进行比较,看看它们之间的差异有多大,从而决定保留哪些和丢弃哪些。

任何人都可以建议如何去做吗?

【问题讨论】:

    标签: python video image-processing video-capture video-processing


    【解决方案1】:

    ffmpeg 之类的工具适用于从视频中提取图像。来自手册:

     ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg
    

    这将每秒从视频中提取一个视频帧,然后 将它们输出到名为foo-001.jpegfoo-002.jpeg 等的文件中。 图像将重新缩放以适应新的 WxH 值。

    然后可以通过PIL 和/或OpenCV 来比较它们的差异。

    编辑:我刚刚意识到只抓取key frames(帧内)可能会更有效,因为当场景发生剧烈变化时会发生这种情况。稍后快速谷歌我们有这个:

    ffmpeg -i foo.avi -vsync 0 -vf select="eq(pict_type\,PICT_TYPE_I)" -s WxH -f image2 foo-%03d.jpeg
    

    【讨论】:

    • 谢谢。第二个示例我无法开始工作,即使使用最新版本的 ffmpeg。第一个例子可以满足我的需要。
    • @zio 请确保您设置了所需的宽度和高度参数 (WxH),即 1280x720,最终命令将如下所示:./ffmpeg -i foo.avi -vsync 0 -vf select=" eq(pict_type\,PICT_TYPE_I)" -s 1280x720 -f image2 foo-%03d.jpeg
    【解决方案2】:

    您基本上想要的是场景检测。 framedifferenceanalyzer 是 Python 中的一个教育性概念证明,它正是这样做的,并且应该为了解问题本身提供一个良好的起点。

    至于自己实现它,ffmpeg 是将视频转换为帧序列的理想工具 - 我可能不会尝试在纯 Python 中完成该部分。

    为了计算帧之间的差异,您可以使用 ImageMagick(尤其是它的 compare 工具)。 ImageMagick 有几个 Python 绑定,例如 PythonMagickmagickwand 仅举两个。

    您也可以使用OpenCV 进行图像分析。 OpenCV 是一个高性能、高质量的计算机视觉算法库,并且可能是执行此类操作的最强大的工具之一。但是,它假设您对计算机视觉/图像处理有一定的了解,并且已经对您要寻找的内容有一个很好的了解。

    【讨论】:

    • 谢谢。比较工具与 python 中的 imagemagick 一起非常适合我。
    【解决方案3】:

    从视频演示中提取幻灯片/帧有多种原因,尤其是在教育或会议相关视频的情况下。它使您无需观看整个视频即可访问学习笔记。

    我已经多次遇到这个问题,所以我决定自己使用 python 为它创建一个解决方案。我已将代码开源,您可以轻松设置此工具并通过几个简单的步骤运行它。

    请参阅youtube video tutorial。 如何使用此工具的步骤。

    • 克隆this project
    • 通过运行“pip install -r requirements.txt”设置您的环境
    • 复制视频路径
    • 运行“python video2pdfslides.py

    轰隆隆! pdf 幻灯片将在输出文件夹中提供 做笔记并享受!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      相关资源
      最近更新 更多