1. 程式人生 > >多媒體技術 || 實現兩幀的影象動態影象切換並存為gif影象

多媒體技術 || 實現兩幀的影象動態影象切換並存為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

用於測試的原圖:
在這裡插入圖片描述
在這裡插入圖片描述
實現效果:
在這裡插入圖片描述