matlab版本是2015b,其中更新了部分函数库之前网上相关程序不适用于新版本,在此提供适用于新版本的程序:
帧序列转换为视频
- function video = frames2video(framepath , videoname)
- %framepath : 表示图像序列所在的路径,同时保证图像的大小相等
- %videoname : 表示将要创建视频的名字
- r_path = framepath;
- videoName = videoname;
- %初始化一个avi文件obj
- obj = VideoWriter(videoName);
- open(obj)
- dirs = dir([r_path,'*.png']);
- for i=1:length(dirs)
- fname=strcat(sprintf('%05d',i),'.png');
- im=imread([r_path dirs(i).name]);
- %一帧一帧的写入avi
- writeVideo(obj,im);
- end
- %将缓存数据写入avi
- close(obj);
- % 返回video
- video = obj;
- end
视频转化为帧序列
- function Framepath = video2frames(videopath , videoname , filename , framerate)
- %videopath : 视频路径
- %videoname : 视频名字
- %filename : 存放图片帧的文件夹
- %framerate : 多少张图片提取一张图片
- FileName = filename
- VideoPath = videopath;
- VideoName = videoname;
- FrameRate = framerate;
- FilePath = ['./',filename]
- if ~exist(FilePath)
- mkdir(FilePath)
- end
- cd (FilePath)
- addpath(VideoPath);
- videoInfo = VideoReader(VideoName);
- for i = 1:FrameRate:videoInfo.NumberOfFrames
- %获得图片对象
- temp = read(videoInfo,i);
- imwrite(temp,strcat(sprintf('%05d',i),'.jpg'),'jpg');% 保存帧
- end
- cd ..
- Framepath = FilePath;
- end