主要内容

在图像序列和视频之间转换

使用视频文件和图像文件序列进行转换录像师VideOwriter

命名的示例文件Shuttle.avi包含121帧。使用帧转换为图像文件录像师imwrite功能。然后,使用图像文件将图像文件转换为AVI文件VideOwriter

设置

创建一个临时工作文件夹以存储图像序列。

workingDir = tempname;Mkdir(WorkingDir)Mkdir(WorkingDir,'图片'

创建录像带

创建一个录像师用于从文件中读取帧。

ShuttleVideo = videoreader('Shuttle.avi');

创建图像序列

通过视频循环,将每个帧读取为一个名为by-3阵列的宽度IMG。将每个图像写入带有表单名称的JPEG文件imgn.jpg,其中n是帧号。

|img001.jpg |

|img002.jpg |

|... |

|img121.jpg |

II = 1;尽管HasFrame(ShuttleVideo)img = ReadFrame(ShuttleVideo);filename = [sprintf('%03d',ii)'.jpg'];fullname = fullfile(workingdir,'图片',文件名);imwrite(img,fullname)%写入JPEG文件(img1.jpg,img2.jpg等)II = II+1;结尾

查找图像文件名

在此处查找所有JPEG文件名图片文件夹。将图像名称集转换为单元格数组。

ImagEnames = dir(fullfile(WorkingDir,'图片',,,,'*.jpg');ImagEnames = {ImagEnames.name}';

用图像序列创建新视频

构造VideOwriter对象,默认情况下会创建Motion-jpeg Avi文件。

outputVideo = videOwriter(fullfile(workingdir,,'Shuttle_out.avi');outputVideo.Framerate = ShuttleVideo.Framerate;打开(outputVideo)

循环遍历图像序列,加载每个图像,然后将其写入视频。

为了II = 1:长度(ImagEnames)img = imread(fullfile(WorkingDir,,'图片',ImageNames {II}));writeVideo(outputVideo,img)结尾

最终确定视频文件。

关闭(outputVideo)

查看最终视频

构建一个阅读器对象。

shuttleavi = videoreader(fullfile(WorkingDir,,'Shuttle_out.avi');

通过视频帧创建MATLAB®电影结构。

II = 1;尽管hasframe(shuttleavi)mov(ii)= im2frame(readframe(shuttleavi));II = II+1;结尾

根据视频的宽度和高度调整当前图和轴的大小,并查看电影的第一帧。

图IMShow(MOV(1).CDATA,'边界',,,,'紧的'

以视频的框架速率播放电影一次。

电影(Mov,1,Shuttleavi.Framerate)

图包含一个轴对象。轴对象包含类型图像的对象。

学分

NASA提供的航天飞机的视频。