把多幀圖片合成為視訊
阿新 • • 發佈:2019-01-31
% function im2mov(picfrom,picend,picformat,aviname) %把圖片集合成一段avi視訊 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 施雲濤 2009年01月08日 % 使用avifile、addframe、getframe等函式實現 % 輸入: % picfrom起始位置 % picend終止位置 % picformat圖片格式,以字元輸入 % aviname生成avi的名字,必須帶字尾名,以字元輸入 %輸出:當前目錄下,名字為aviname的視訊檔案 %備註:所有圖片的大小必須與第一次輸入的大小一致 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% picfrom=1; picend=580; picformat='jpg'; aviname='e.avi'; %獲得圖片格式,picfrom表示從哪張圖片開始,picend是圖片幀數,picformat代表圖片格式,aviname表示生成的avi的檔名 picname=strcat('C:\Users\lx\Desktop\腦洞\1out\*.',picformat); %寫入相應的資料夾地址 %顯示該目錄下的該圖片格式的所有圖片,此處如使用ls,ls所得的結果是字元陣列,對下一步無法更好操作 picname=dir(picname); picend=length(picname); %使用avifile,可進行很多引數的設定修改 aviobj = avifile(aviname); % aviobj = avifile('test.avi') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%可調整的引數 % Adjustable parameters: % Fps: 15.0000 % Compression: 'Indeo5' % Quality: 75 % KeyFramePerSec: 2.1429 % VideoName: 'test.avi' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%% %%自動獲得的引數 % Automatically updated parameters: % Filename: 'test.avi' % TotalFrames: 0 % Width: 0 % Height: 0 % Length: 0 % ImageType: 'Unknown' % CurrentState: 'Open' %%%%%%%%%%%%%%%%%%%%%%% aviobj.Quality = 100; %設定質量為100 aviobj.Fps = 29; %設定幀數為29幀每秒 % aviobj.compression=''; %使用addframe把圖片寫入視訊 for i=picend:-1:picfrom %picdata=imread(strcat('C:\Users\lx\Desktop\腦洞\1out\',picname(i,1).name)); picdata=imread(strcat('C:\Users\lx\Desktop\腦洞\1out\',[num2str(i),'.jpg'])); %以上是兩種讀檔案的情況,如果所有的圖片都是按照順序排列的,檔名不規律,那麼用第一種,如果你的每一幀取名為1,2,3……以此類推,那麼因為按照第一種方式讀檔案會讀1,10,101這樣,所以應該用第二行的程式碼來讀圖片 aviobj=addframe(aviobj,uint8(picdata)); end aviobj=close(aviobj);