用MATLAB將照片合成視頻或者GIF圖片、以及Photoshop制作GIF圖片


用MATLAB將照片合成視頻或者GIF圖片、以及Photoshop制作GIF圖片

一、用MATLAB將照片合成視頻(我使用的MATLAB是2015版本的)

(1)、你需要合成視頻的圖片。

        所有照片放在一個文件夾里面。因為是使用Matlab的dir函數讀取照片,所以讀取時,你要先設置好文件名:圖片名稱按照“001、002、003...”排列。否則圖片顯示順序就會出錯。

        如果圖片是用matlab在循環里使用saveas(gca,[Path,num2str(i)],'jpg');自動保存的圖片源的話。注意這里的文件名稱是以變量i保存。也就是在保存圖片時如果不足十位或者百位不會在前面的自動補零。此時就需要你自己重命名,當然幾百張,幾千張照片讓你一個個重命名未免太慘。

  可以使用軟件改名字或者保存圖片的時候就設置好前置的0,也就是說如果你的圖片總數有4位數,那么1000以前的數一定要補零,補足4位。

  1)使用matlab的話,就是用數字轉為字符串就行

    

 

       2) 可以使用軟件,小巧好用:http://pan.baidu.com/s/1hsiWhTy 密碼:f794。下載就直接可以使用。

              

        使用軟件的時候會提醒下載新的版本,選擇否,設置好之后執行修改之后會提醒更新,這時候點確定就行。

 

(2)、Matlab代碼:

%制作視頻

clear clc;close all;

tic;

srcDic = uigetdir('D:\MATLAB_WORKSPACE\Work_SAVE\picture\');%這里的地址就是你的圖片所放的地址.

cd(srcDic);

allnames = struct2cell(dir('*.jpg'));

[k,len]=size(allnames);

aviobj = VideoWriter('我的第一個視頻.avi');%設置視頻名字.

%可以設置視頻格式,mp4比較推薦,因為目前蘋果系統只支持mp4。
%aviobj = VideoWriter('我的第一個視頻.mp4','MPEG-4');%設置視頻名字.

aviobj.FrameRate = 10;%這里設置你想要生成的視頻的幀數.

open(aviobj)

for i = 1:len

    name = allnames{1,i};

    frame = imread(name);

    writeVideo(aviobj,frame);

end

close(aviobj)

toc;

(3)、Matlab運行之后生成的AVI格式的視頻就存放在你的圖片保存的文件夾里面。

 

/*********************************************************************************************/

二、用MATLAB制作GIF圖片(我使用的MATLAB是2015版本的)

(1)、你需要需要合成視頻的圖片。

這里的要求和上面制作視頻的要求一樣,這里就不贅述了。

(2)、Matlab代碼:

clear clc; close all;

tic;

Path='G:\圖片源\圖片 - 副本\';%這里要注意這個路徑要先添加在Matlab的工作路徑下,不然會出錯。

%參數調整

filename= 'my_gif.gif'; %你的gif文件的名字

t1=0.5; t=0.5;%t1:第一張圖暫停的時間,t其他時間間隔,用來控制播放速度,單位秒

ext = {'\*.jpeg', '\*.jpg', '\*.png', '\*.pgm', '\*.tig', '\*.bmp'};  d = [ ];

for i = 1:length(ext)

    d =[d; dir( [Path,ext{i}] ) ]; % cd:當前路徑

end

str = {d.name};

if ~isempty(str)

    [Selection,ok] = listdlg('ListString',str,'name','Choose pictures','PromptString',...

        'Please choose pictures','SelectionMode','Multiple', 'ListSize',[400,200]);

else

    error('No picture find , add filename extension or change path.')

end

set(0,'defaultfigurecolor','w');

 

for i = 1:length(Selection)

    figure(i)

     imshow((imread(str{Selection(i)})),'InitialMagnification','fit')% Or :  d(Selection(i)).name == str{Selection}

     title(str(Selection(i)));

    frame=getframe(i);

    im=frame2im(frame);%制作gif文件,圖像必須是index索引圖像

    [I,map]=rgb2ind(im,256);

    k=i-0;

    if k==1

        imwrite(I,map,filename,'gif','Loopcount',inf,...

            'DelayTime',t1);%loopcount只是在i==1的時候才有用

    else

        imwrite(I,map,filename,'gif','WriteMode','append',...

            'DelayTime',t);%DelaylayTime用於設置gif文件的播放快慢

    end

end

toc;

(3)、這樣產生的gif圖片保存在你的Matlab的默認工作路徑下,也就是你打開Matlab軟件時,它默認的那個路徑。不過圖片你需要使用ie游覽器打開才能動,或者用其他軟件,比如PPT放映時。

 

/*********************************************************************************************/

三、Photoshop制作GIF圖片。(我使用的Photoshop是Photoshop CS6)

如果你說你沒有Matlab怎么辦,沒事!咱用Photoshop,使用Photoshop,你想把圖片P成什么樣,就能弄成什么樣,不像Matlab那么冰冷。

咱一步一步來:

第一步:把你想合成的幾張照片在Photoshop里打開(我用謝耳朵演示)

 

第二步:把幾張照片拖到一個文件下

 

方便GIF圖片顯示順序,可以利用圖層名字,不容易弄混。

第三步:窗口-時間軸-創建時間軸

 

第四步:轉換為幀動畫之后復制出五幀,然后設置幀(因為我只有五張圖片,你有幾張圖片就弄多少幀)

那個秒數就是每張圖片顯示的時間,可以自己設置,我設置的1秒。然后對每幀動畫的圖層進行調整,按空格鍵就可以預覽。

 

第五步:不要直接保存,要儲存為Web所用格式,循環設置為永久,可以播放看一下效果。之后就存儲,然后保存,注意保存時圖片名不要有中文不然會出錯。

  

 

(3)、看一下效果:(我后來把顯示時間改成0.5秒,看着好玩一點)

          

總的來說,Photoshop做GIF圖片比Matlab要精細,適合數量少的,合成的GIF數量少,如果要求數量多,就只能使用Matlab循環不斷生成不斷生成。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM