主要内容

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

转换之间的视频文件和图像文件序列使用VideoReaderVideoWriter

示例文件名为shuttle.avi包含121帧。将帧转换为图像文件使用VideoReaderimwrite函数。然后,将图像文件转换为AVI文件使用VideoWriter

设置

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

workingDir = tempname;mkdir (workingDir) mkdir (workingDir,“图片”

创建VideoReader

创建一个VideoReader用于从文件中读取帧。

shuttleVideo = VideoReader (“shuttle.avi”);

创建图像序列

循环播放视频,将每一帧读入一个名为img.将每个图像写进带有格式名称的JPEG文件中imgN.jpg,其中N为帧号。

| img001.jpg |

| img002.jpg |

| |…

| img121.jpg |

2 = 1;hasFrame(shutlevideo) img = readFrame(shutlevideo);文件名= [sprintf (' % 03 d ',(二)“jpg”];fullname = fullfile (workingDir,“图片”文件名);fullname imwrite (img)%写入一个JPEG文件(img1.jpg, img2.jpg等)2 = 2 + 1;结束

查找图像文件名称

文件中的所有JPEG文件名图片文件夹中。将一组图像名称转换为单元格数组。

imageNames = dir (fullfile (workingDir“图片”‘* . jpg”));imageNames = {imageNames.name} ';

创建新的视频与图像序列

构造一个VideoWriter对象,该对象默认创建一个Motion-JPEG AVI文件。

outputVideo = VideoWriter (fullfile (workingDir“shuttle_out.avi”));outputVideo。帧速率= shuttleVideo.FrameRate;打开(outputVideo)

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

ii = 1:length(imageNames) img = imread(fullfile(workingDir,“图片”, imageNames {2}));writeVideo (outputVideo img)结束

完成视频文件。

关上(outputVideo)

查看最终视频

构造一个读取器对象。

shuttleAvi = VideoReader (fullfile (workingDir“shuttle_out.avi”));

从视频帧创建一个MATLAB电影结构。

2 = 1;hasFrame(shutleavi) mov(ii) = im2frame(readFrame(shutleavi)); / /输出2 = 2 + 1;结束

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

图imshow (mov .cdata (1),“边界”“紧”

以视频的帧率播放一次电影。

电影(mov 1 shuttleAvi.FrameRate)

图中包含一个轴对象。axis对象包含一个image类型的对象。

学分

航天飞机的视频由美国宇航局提供。