码迷,mamicode.com
首页 > 其他好文 > 详细

Matlab 视频与图像之间的相互转换

时间:2016-01-11 23:31:21      阅读:315      评论:0      收藏:0      [点我收藏+]

标签:

matlab版本是2015b,其中更新了部分函数库之前网上相关程序不适用于新版本,在此提供适用于新版本的程序:

帧序列转换为视频

  1. function video = frames2video(framepath , videoname)
  2. %framepath : 表示图像序列所在的路径,同时保证图像的大小相等
  3. %videoname : 表示将要创建视频的名字
  4. r_path = framepath;
  5. videoName = videoname;
  6. %初始化一个avi文件obj
  7. obj = VideoWriter(videoName);
  8. open(obj)
  9. dirs = dir([r_path,‘*.png‘]);
  10. for i=1:length(dirs)
  11. fname=strcat(sprintf(‘%05d‘,i),‘.png‘);
  12. im=imread([r_path dirs(i).name]);
  13. %一帧一帧的写入avi
  14. writeVideo(obj,im);
  15. end
  16. %将缓存数据写入avi
  17. close(obj);
  18. % 返回video
  19. video = obj;
  20. end

视频转化为帧序列

  1. function Framepath = video2frames(videopath , videoname , filename , framerate)
  2. %videopath : 视频路径
  3. %videoname : 视频名字
  4. %filename : 存放图片帧的文件夹
  5. %framerate : 多少张图片提取一张图片
  6. FileName = filename
  7. VideoPath = videopath;
  8. VideoName = videoname;
  9. FrameRate = framerate;
  10. FilePath = [‘./‘,filename]
  11. if ~exist(FilePath)
  12. mkdir(FilePath) % 若不存在,在当前目录中产生一个子目录
  13. end
  14. cd (FilePath)
  15. addpath(VideoPath);
  16. videoInfo = VideoReader(VideoName);
  17. for i = 1:FrameRate:videoInfo.NumberOfFrames
  18. %获得图片对象
  19. temp = read(videoInfo,i);
  20. imwrite(temp,strcat(sprintf(‘%05d‘,i),‘.jpg‘),‘jpg‘);% 保存帧
  21. end
  22. cd ..
  23. Framepath = FilePath;
  24. end

 

Matlab 视频与图像之间的相互转换

标签:

原文地址:http://www.cnblogs.com/hubenchuan/p/5122873.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!