如何在MATLAB中制作GIF动图教程
最编程
2024-07-26 13:27:37
...
相信大家平时制作PPT时,通常会需要一些GIF加以修饰或者辅助说明。但是又苦于不会用视频剪辑软件或者制作的质量不够完美。今天,给大家分享一个如何用MATLAB来制作GIF动画,不仅简单实用体积小,GIF动画的效果还很精致。其中涉及到了很多MATLAB编程的一些基础知识,比如for语句、while循环以及涉及到图像处理的函数语法,我都作了详细的注释。相信在给大家带来干货分享的同时,也会加深大家对编程基础知识的理解和对编程的认识。
1.分解视频所有帧
这步操作,主要是将视频所有帧的图像读取出来,并且按照序号进行保存
(如果视频比较大的话,大家可以根据实际情况,对for循环进行修改读取和保存相应的部分),方便大家根据图片的序号查找视频中想要节选的片段。
// An highlighted block
video = VideoReader('video_eg.mp4'); %读取视频
nFrames = video.NumberOfFrames; %获取视频帧数
% H = video.Height; %得到高度
% W = video.Width; %得到宽度
%read one frame every time
for i = 1:nFrames
mov = read(video,i); %读取视频的每一帧
name = strcat('mov_',int2str(i),'.jpg'); %给每一帧命名
imwrite(mov,name); %保存每一帧图像
pause(0.0001) %暂停
end
2.鼠标手动裁剪
为了更精准地满足对GIF制作的需求,视频的整个界面中有可能有很多多余的部分,这是我们需要对视频屏幕区进行选取,用鼠标画出矩阵区域裁剪我们想要的部分。
%% ==== 选取鼠标手动裁剪选定的gif区域
start = 130; %设置初始帧
stepall = 203; %设置终止帧
step1 = 1; %GIF动画帧间隔
name = strcat('mov_',int2str(start),'.jpg'); %帧名
gif_img = imread(name);
[b,r] = imcrop(gif_img); %裁剪函数裁剪图像
这是我从抖音上随便下载了一个小视频作为素材,想要将两个小孩子拥抱的镜头加个特写制作出一个GIF动画。如图所选区域就是两个小孩即将拥抱的镜头所在区域。鼠标选中之后,双击。
3.制作GIF动画
接下来便对上一步中,所选择的帧图像序号,进行合成制作GIF动画了。这里我选择的起始和终止序号分别是130,203,大家根据自己实际情况做修改即可。
//
i = start;
while(i <= stepall)
name = strcat('mov_',int2str(i),'.jpg');
b = imread(name);
gif_img = imresize(b,1); %把图像放大*倍
gif_img=imcrop(gif_img,r);%交互式裁剪
[I,map] = rgb2ind(gif_img,128); %索引图像
if i == start
imwrite(I,map,'New.gif','gif', 'Loopcount',inf,'DelayTime',0.000001);
elseif i == stepall
imwrite(I,map,'New.gif','gif','WriteMode','append','DelayTime',0.000001);
else
imwrite(I,map,'New.gif','gif','WriteMode','append','DelayTime',0.000001);
end
i= i+step1;
end
效果图如下:
有问题和需要源码的小伙伴们可以直接扫码,点击下方文章链接
手把手教你用MATLAB制作gif动画,从此PPT汇报不再为素材犯愁了
回复:MATLAB,获得更多MATLAB的学习资料。
上一篇: 如何简单做出会动的GIF背景图