matlab制作GIF动图

做PPT需要放很多张类似的图,有时候把很多张图做成一个动图更合适,网上的在线合成的难免有logol或者收费什么的,就自己写一个吧,以后需要用了就打开复制粘贴,运行程序,完成了。

1、常用如下:

具体的代码如下:

clc;clear all;
close all;

fileName = 'E:\WorkFile\';
fileType = '*.png';
fileIndex = dir([fileName fileType]);                     % 获取文件的全部名称
len = length(fileIndex);                                     % 计算文件个数

% 建立循环读取
for m = 1:len
    midname = fileIndex(m);                                         % 找到每次读取的文件名
    everypic = [midname.folder '\'  midname.name];   % 拼接字符串,组成完整的文件名
    onedata = imread(everypic);                                  % 读取每个png文件
    [imind,map0] = rgb2ind(onedata,256);                 % 将rgb图像转存为索引图象
    if m == num
       imwrite(imind,map0,'mygif1-2.gif','GIF', 'Loopcount',inf,'DelayTime',0.1);   % 建立第一个图像
    else
       imwrite(imind,map0,'mygif1-2.gif','GIF','WriteMode','append','DelayTime',0.1);  % 将后续图像添加到前动图中
end

2、改变关键帧的速度

代码如下

clc;clear all;
close all;

fileName = 'E:\WorkFile\';
fileType = '*.png';
fileIndex = dir([fileName fileType]);                     % 获取文件的全部名称
len = length(fileIndex);                                     % 计算文件个数

% 建立循环读取
for m = 1:len
    midname = fileIndex(m);                                         % 找到每次读取的文件名
    everypic = [midname.folder '\'  midname.name];   % 拼接字符串,组成完整的文件名
    onedata = imread(everypic);                                  % 读取每个jpg文件
    [imind,map0] = rgb2ind(onedata,256);                 % 将rgb图像转存为索引图象
    if m == 1
        imwrite(imind,map0,'mygif1-2.gif','GIF', 'Loopcount',inf,'DelayTime',0.1);   % 建立第一幅图像
    else
        if m<46  || m>76
            imwrite(imind,map0,'mygif1-2.gif','GIF','WriteMode','append','DelayTime',0.1);  % 将后续图像添加到前动图中
        else
            imwrite(imind,map0,'mygif1-2.gif','GIF','WriteMode','append','DelayTime',1);  % 将后续图像添加到前动图中
        end
    end 
end


3、将多个图片拼接同步显示

代码如下

因为图片数据是放在同一个文件夹下的,所以读数据的时候奇偶数分开读取拼接。

clc;clear all;
close all;

fileName = 'E:\WorkFile\';
fileType = '*.png';
fileIndex = dir([fileName fileType]);                     % 获取文件的全部名称
len = length(fileIndex);                                     % 计算文件个数


p = 816;
q = 751+806;
onedata =ones(p,q,3)*255;

% 建立循环读取
for m = 1:2:len
    midname1 = fileIndex(m);                                         % 找到每次读取的文件名
    everypic1 = [midname1.folder '\'  midname1.name];   % 拼接字符串,组成完整的文件名
    onedata1 = imread(everypic1);                                  % 读取每个jpg文件的指定区域参数,根据csv内容自己做出调整
    midname2 = fileIndex(m+1);                                         % 找到每次读取的文件名
    everypic2 = [midname2.folder '\'  midname2.name];   % 拼接字符串,组成完整的文件名
    onedata2 = imread(everypic2);                                  % 读取每个jpg文件的指定区域参数,根据csv内容自己做出调整
    onedata(1:751,75:692+74,:) = onedata1;
    onedata(:,752:end,:) = onedata2;
    pic = uint8(onedata);
    [imind,map0] = rgb2ind(pic,256);                 % 将rgb图像转存为索引图象
    if m == 1
        imwrite(imind,map0,'mygif1-1.gif','GIF', 'Loopcount',inf,'DelayTime',0.3);   % 建立第一幅图像
    else
        imwrite(imind,map0,'mygif1-1.gif','GIF','WriteMode','append','DelayTime',0.3);  % 将后续图像添加到前动图中
    end 
end





你可能感兴趣的:(matlab,matlab,图像处理,计算机视觉)