可能有老师把PPT转成mp4格式,但是看视频复习会有各种不方便,比如不小心过去一张PPT,调进度又不那么容易定位,关键是视频不能打印。像我喜欢看纸质的东西,就需要把视频里想要的帧提取出来。
原料&原理
原料自然是那个视频了,还有我这里用的MATLAB R2016a 自带的图形处理工具箱。重要的是方法,java或者Python也都可以。
提取帧的原理是,这个视频帧率大概30fps,有好多帧长得一样或者同一张PPT因为多个动画而只需要最后一个动画那张。
步骤
(1)将视频读入变量,挨个对比前后两帧的差异大小,要用到二值图像的异或运算。
(2)RGB图像转为bw二值图像。
(3)相同或者同一张PPT不同动画时间往往差异不大,而一张PPT末尾和另一张PPT开头往往差异很大,当差异大于某阈值(自己视情况而设)时,留下前一张(或者删除后一张)。
代码
filename='video_dir';%视频路径
obj=VideoReader(filename);%读取视频,
sumfrm=obj.NumberOfFrame;%获得帧总数
for i=1:sumfrm
frm{i}=read(obj,i);%将每一帧保存
bw{i}=im2bw(frm{i});%转为二值图像