MATLAB | 将图片序列转换为视频文件
读取中生成的图片序列,生成视频文件并保存。
%% Title: Video Generator
% Author: 羽墨志
% Date : 2020-09-17
%% Introduction
% 读入已有图像文件序列生成视频文件并保存到指定文件夹下
% 图片文件信息
image_path = 'image/'; % 图片序列文件位置
image_suffix = '.png'; % 图片文件后缀
image_num = 32; % 图片总数
% 设置视频相关参数
% 视频分辨率由第一帧图片的分辨率确定
video_path = 'videos/'; % 视频文件保存路径
video_name = 'video.avi'; % 视频文件名
frame_rate = 1; % 视频帧率
% vedio = VideoWriter('demo.mp4','MPEG-4'); % 初始化一个MP4文件
% vedio = VideoWriter('demo_tag.avi','Uncompressed AVI'); % 初始化一个不压缩的avi文件
vedio = VideoWriter(strcat(video_path,video_name)); % 初始化一个avi文件
vedio.FrameRate = frame_rate; % 设置视频帧率
open(vedio); % 打开视频文件
% 生成图像并保存
for index = 1 : image_num
% 拼接图片文件名
image_name = sprintf('image_%d',index * 8 - 1); % 此处应根据实际的图片编号确定
image = imread([image_path,image_name,image_suffix]);
% 拼接文件名并保存图像
% 生成视频仅需图像数据即可,因此无需保存图片
% imwrite(image,strcat(path, prefix, num2str(gray_value), suffix), format);
writeVideo(vedio,image); % 写入视频帧
end
close(vedio); % 关闭视频文件
1.picture into MOV:
clear;clc;close all;
fig=figure;
aviobj=VideoWriter('example.avi');
aviobj.FrameRate=30;%set FrameRate before open it
open(aviobj);
n=30;
x=0:pi/n:2*pi;
y=sin(x);
k=0;
set(fig,'outerposition',get(0,'screensize'));%maximize the window
j=1;
for t=0:pi/n:2*pi
k=k+1;
x(k)=t;
y(k)=sin(t);
H=plot(x,y,x(k),y(k),'or');
grid
MOV=getframe(fig);
writeVideo(aviobj,MOV);
fmat(:,j)=getframe;
j=j+1;
end
close(fig)
close(aviobj)
%% play
movie(fmat,1);
picture into GIF:
clear;close all;clc;
Z = peaks;
surf(Z)
axis tight
Zl=zlim;
for k = 1:20
surf(cos(2*pi*k/20)*Z,Z)
zlim(Zl);
% save to gif
f = getframe;
im=frame2im(f);
[I,map] = rgb2ind(im,256);
if k==1
imwrite(I,map,'example.gif','gif','loopcount',inf,'Delaytime',0.02)
else
imwrite(I,map,'example.gif','gif','writemode','append','Delaytime',0.02)
end
end