在matlab怎么实现图像序列与视频之间的转换
1、设置创建一个临时工作文件夹来存储图像序列。命令行键入:workingDir = tempname;mkdir(workingDir)mkdir(workingDir,'images')
2、创建视频阅读器创建一个视频阅读器,用于从文件中读取帧。命令行键入:shuttleVideo = VideoReader('shuttle.avi');
3、创建图像序列循环播放视频,将每一帧都读取为一个名为img的3倍宽数组。将每幅图像写入一个荏半吨蛸名为imgN.jpg的JPEG文件,祈硗樘缎其中N是帧号。命令行键入:ii = 1;while hasFrame(shuttleVideo) img = readFrame(shuttleVideo); filename = [sprintf('%03d',ii) '.jpg']; fullname = fullfile(workingDir,'images',filename); imwrite(img,fullname) % Write out to a JPEG file (img1.jpg, img2.jpg, etc.) ii = ii+1;end
4、查找图像文件名查找图像文件夹中的所有JPEG文件名。将图像名称集转换为单元格数组。命令行键入:imageNames = dir(fullfile(workingDir,'images','*.jpg'));imageNames = {imageNames.name}';
5、使用图像序列创建新视频构造一个视频编写器对象,默认情况下创建一个Motion-JPEG AVI文竭惮蚕斗件。命令行键入:outputVideo = VideoWriter(fullfile(workingDir,'shuttle_out.avi'));outputVideo.FrameRate = shuttleVideo.FrameRate;open(outputVideo)
6、循环遍历图像序列,加载坡庥汩赴每个图像,然后将其写入视频。命令行键入:for ii = 1:length(imageNames) img = imread(fullfile(workingDir,泌驾台佐39;images',imageNames{ii})); writeVideo(outputVideo,img)end
7、最终确定视频文件。命令行键入:close(outputVideo)
8、查看最终视频构造读者对象。命令行键入:shuttleAvi = VideoReader(fullfile(workingDir,'shuttle_out.avi'));
9、从视频帧创建一个MATLAB电影结构。命令行键入:ii = 1;while hasFrame(shuttleAvi) mov(ii) = im2frame(readFrame(shuttleAvi)); ii = ii+1;end
10、根据视频的宽度和高度调整当前图形和轴的大小,并查看电影的第一帧。命令行降入:f = 酆璁冻嘌figure;f.Position = [150 150 shuttleAvi.Width shuttleAvi.Height];ax = gca;ax.Units = 'pixels';ax.Position = [0 0 shuttleAvi.Width shuttleAvi.Height];image(mov(1).cdata,'Parent',ax)axis off
11、按“Enter”键。如图1所示。
12、以视频的帧速率回放电影一次。命令行键入:movie(mov,1,shuttleAvi.FrameRate)
13、按“Enter”键。如图2所示。