利用matlab将视频转为PPT

网上可以找到将ppt转为视频,没看到到视频转为ppt。想去找一些ppt形式的绘本,但甚至pdf格式的绘本都没有找到。不过,发现不少绘本以视频的形式存在,就想着能不能将视频转为ppt。基本思路很简单,将视频的每一帧,按照固定的间隔转换为图片,然后用工具生成ppt
Created with Raphaël 2.3.0 开始 视频未结束? 按照指定的帧数间隔保存 结束 yes no

利用matlab的VideoReader可以很容易读取视频数据,代码Video2Image2函数参考自
https://blog.csdn.net/lingyunxianhe/article/details/83543282
在我的matlab2018的环境下运行出错,稍微做了一点改动



%auto ppt

Path   =  "D:\";%视频的路径
VideoPath = Path;%图片的保存路径
VideoName = "szxz";%视频的名称,未加后缀,主要是作为图片保存的前缀
VideoPath =  strcat(Path,VideoName);%视频的路径
VideoPath = strcat(VideoPath,".mp4");%视频的完整路径
Video2Image2(VideoPath,Path,VideoName,60,20);

%VideoPath,ImageSaveFolder,ImNamePre,ImSpanNum,StartId
%VideoPath                         ---视频的路径
%ImageSaveFolder             ---图片保存路径
%ImNamePre                      ---图片保存的前缀
%ImSpanNum                     ---每间隔ImSpanNum帧保存图像
%StartId                               ---起始保存帧

function Video2Image2(VideoPath,ImageSaveFolder,ImNamePre,ImSpanNum,StartId)
ImageSaveForm='.jpg';
ObjImSize=[480,640];
%获取视频信息
vidObj= VideoReader(VideoPath);
%把上面保存的信息写入图片中去
if ~exist(ImageSaveFolder,'dir')
    mkdir(ImageSaveFolder);
end
IsExtractPointStartId=false;%从指定的帧号开始提取图片
CurFrameId=0;
PreFrameId=0;
MyFrame = 0;
while hasFrame(vidObj)
    Image = readFrame(vidObj);
    CurFrameId=CurFrameId+1;
    if (~IsExtractPointStartId)&&(CurFrameId==StartId)
        IsExtractPointStartId=true;
        PreFrameId=CurFrameId;
        Image=imresize(Image,ObjImSize);
        %按指定格式保存到指定的文件夹
        ImageName=sprintf('%s%d%s',ImNamePre,MyFrame,ImageSaveForm);
        ImagePath=fullfile(ImageSaveFolder,ImageName);
       ImagePath =  sprintf('%s',ImagePath);
        imwrite(Image,ImagePath);
        MyFrame = MyFrame + 1;
        continue;
    end
    if ((CurFrameId-PreFrameId)==ImSpanNum)
        PreFrameId=CurFrameId;
        Image=imresize(Image,ObjImSize);
        %按指定格式保存到指定的文件夹
        ImageName=sprintf('%s%d%s',ImNamePre,MyFrame,ImageSaveForm);
        ImagePath=fullfile(ImageSaveFolder,ImageName);
        ImagePath =  sprintf('%s',ImagePath);
        imwrite(Image,ImagePath);
        MyFrame = MyFrame + 1;
    end
end
end

得到图像后,用FreePic2Pdf将图片转为pdf,即可在电脑上播放
在这里插入图片描述
从上图可以看到,由于是固定帧数间隔的保存图像,里面包含了不少重复的图片。简单的做法可以直接手动删除,虽然low了一些,工作量不大。另外一个思路是用图像减法,相邻的两帧做一个减法,看看图像的差距。如果差距大,说明帧与帧之间存在差异,说明视频的图像变动了,以此为契机,保存当前帧,寻找下一个变化的图像,直到视频结束。代码没什么难度,懒得实现。

Created with Raphaël 2.3.0 开始 保存当前帧 视频未结束? 与上次保存的图像做减法 图像差距够大? 保存当前帧 ,返回第一个条件 结束 yes no yes no
如果pdf想转ppt也很容易,推荐一个在线的网址 https://www.ilovepdf.com/pdf_to_powerpoint。 另外,使用WPS投屏在小米电视上播放ppt也很舒服,用遥控器可以上翻下翻ppt,有一种上课的感觉。
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值