我想使用OpenCV从视频讲座中提取所有幻灯片。以下是一个讲座示例:http://www.youtube.com/watch?v=-hxOpz9c0bY。
你会推荐什么方法?到目前为止,我已经尝试过:
-
比较每帧灰度强度的变化。当前景中的对象四处移动时,这可能会出现问题。例如,在本次讲座中,有一只手在四处移动:http://www.youtube.com/watch?v=mNzu42FrlHo#t=07m00s.
-
使用SURF功能并逐帧进行比较。这种方法似乎有点慢。
有人有其他想法吗?
大部分工作很可能已经由视频编码器完成。您只需要提取关键帧,并检查它们之间的帧压缩程度。
区分静止图像也应该相当容易。只检查关键帧可以节省大量时间。幻灯片可能具有高对比度、实心形状和实心背景。演讲厅形状模糊,对比度低。
您需要的是场景变化检测。之后,您必须将场景分类为"演讲厅"或"演示"。至于手的问题,你可以使用自适应背景的背景减法(只需确保你屏蔽了前景……你不希望前景成为背景的一部分)。
您可以尝试边缘检测并寻找矩形对象-幻灯片(高于特定区域阈值)。您可以通过在矩形中查找一些文本来进一步减少FP。
从视频演示中提取幻灯片/帧有几个原因,尤其是在教育或会议相关视频的情况下。它允许您在不观看整个视频的情况下访问学习笔记。
我已经多次遇到这个问题,所以我决定自己使用python创建一个解决方案。我已经把代码开源了,你可以很容易地设置这个工具,并通过几个简单的步骤运行它。
有关youtube视频教程,请参阅此。有关如何使用此工具的步骤。
- 克隆此项目视频2pdfslides
- 通过运行";pipinstall-r requirements.txt"
- 复制您的视频路径
- 运行";python视频2pdfslides.py<video_path>quot;繁荣pdf幻灯片将在输出文件夹中提供制作笔记并享受