多媒体技术 || 实现两帧的图像动态图像切换并存为gif图像

实现代码:

function imageChange()
s = char('E:\Desktop\多媒体技术\诺贝尔.jpg','E:\Desktop\多媒体技术\lena.jpg');
image = cellstr(s);
I1 = imread(image{1});
I2 = imread(image{2});
I1=im2double(I1);
I2=im2double(I2);
img = I1(:,:,2); %将诺贝尔图片转换为单通道灰度图,这里保留绿色通道
img2 = I2(:,:,1); %将lena图片只保留红色通道
[width,height] = size(img);
%设置窗口属性:禁用菜单栏,标题不显示编号,设置position
F = figure('menubar','none','NumberTitle','off','position',[1000 1000 width height],'name','视频切换效果');
movegui(F,'center');%居中
%关闭坐标线
axes('Visible','off','units','normalized','position',[0 0 1 1]);
%设置最大的半径值
R_max = sqrt((width/2)^2+(height/2)^2);
step = 30; %设置步长,即30帧
x0 = width/2; y0 = height/2;
pic_num = 1;
hIm = imshow(img);
for i = 1:1:step
%%圆的判断
    for x = 1:width
        for y = 1:height
            if(sqrt((x-x0)^2+(y-y0)^2) <= i/step*R_max)
               img(x,y) = img2(x,y);
            end
        end
    end
    set(hIm,'CData',img);%设置image对象CData属性为Im
    drawnow ;
    %接下来是matlab根据每帧窗口生成gif的模板,可套用
    F1=getframe(gcf);
    I=frame2im(F1);
    [I,map]=rgb2ind(I,256);
    if pic_num == 1
        imwrite(I,map,'E:\Desktop\多媒体技术\test.gif','gif', 'Loopcount',inf,'DelayTime',0.2);
    else
        imwrite(I,map,'E:\Desktop\多媒体技术\test.gif','gif','WriteMode','append','DelayTime',0.2);
    end
    pic_num = pic_num + 1;
end
end

用于测试的原图:
在这里插入图片描述
在这里插入图片描述
实现效果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/perry0528/article/details/82913015