首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python将视频帧保存为图片

需求:

最近在学一个视频教程,里面的PPT内容很不错,想保存下来,但是边听课边截图很费事。于是上网找了一下相关代码,改了一下实现了。

程序作用:对视频的内容进行截图并编号保存到指定文件夹。

实现原理:

通过openCV获取视频帧,保存为图片。将此图片与上一次获得的图片进行比较。如果不一样(可设定相同内容的百分比),则将此图片截图保存,并更新用于比较的图片。如果一样,则跳过,不保存,继续获取下一帧。

比较图片相同与否的算法是通过PIL库中的image里面的函数,将图像转换为直方图,存储在list中。然后用计算方差的公式计算出一个数值,如果两个图片的这个数值差别太大,则认为两个图片不一样。

详细介绍:

首先,利用播放器来查看视频的帧率。可以看到这个视频是25fps,意思就是每秒25帧,每帧就是一个图像。这个数据在后面选择多长时间采样一次会用到。

获取帧图片函数:

以下代码,每次间隔125帧获取一次图片。除以上面的帧率,就是5秒获取一次图片。

图片比较函数,如下

图片通过上述函数转换为直方图,

image1=image3.histogram()

print(h1)

这个直方图是关于像素数量的list,图像中的每个象素值对应一个成员。如果图像有多个通道,所有通道的直方图会连接起来。打印出来会像下面这样。

这里为什么用方差公式呢?百度百科对于方差公式的解释:

方差公式是一个数学公式,是数学统计学中的重要公式,应用于生活中各种事情,方差越小,代表这组数据越稳定,方差越大,代表这组数据越不稳定。

这里依次作为判断。

程序运行效果还是不错的。很快,也没有占太多资源。

没有试过截电影图片会怎么样。

等2018年学会pyqt了。加个图形界面。视频一拖进去就显示加载路径。可以设置每隔多长时间截一次图。点个按钮就开始截图。那就好了。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180108G0ZZQ600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券