多媒體技術 || 實現兩幀的影象動態影象切換並存為gif影象
阿新 • • 發佈:2018-10-31
實現程式碼:
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
用於測試的原圖:
實現效果: