主要内容

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

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

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

设置

创建一个临时工作目录来存储图像序列。

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

创建VideoReader

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

shuttleVideo = VideoReader (“shuttle.avi”);

创建一个图像序列

循环的视频,阅读每一帧width-by-height-by-3数组命名img。写出每个图像JPEG文件的名称形式imgN.jpg,其中N是帧数。

| img001.jpg |

| img002.jpg |

| |…

| img121.jpg |

2 = 1;hasFrame (shuttleVideo) img = readFrame (shuttleVideo);文件名= [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对象,该对象默认创建一个jpeg AVI文件。

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

遍历图像序列,加载每个图像,然后把它写的视频。

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

完成视频文件。

关上(outputVideo)

查看最后的视频

构造一个读者对象。

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

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

2 = 1;hasFrame (shuttleAvi) mov (ii) = im2frame (readFrame (shuttleAvi));2 = 2 + 1;结束

调整当前图和轴基于视频的宽度和高度,并查看第一帧的电影。

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

播放电影曾经在视频的帧率。

电影(mov 1 shuttleAvi.FrameRate)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

学分

由美国国家航空航天局航天飞机的视频。