將圖片序列轉化為視頻文件



%下面不規范的注釋就不用介意了
%手動選擇存有圖片的文件夾
srcDic = uigetdir('C:\Users\NEVERGUVEIP\Desktop\機器學習\my_train');
cd(srcDic);
%讀取圖片名字
allnames = struct2cell(dir('*.jpg'));
[k,len]=size(allnames);
aviobj = VideoWriter('driver.avi');%給視頻起名字
aviobj.FrameRate = 5;%設置幀率
open(aviobj)
%創作視頻
for i = 1:len
    name = allnames{1,i};
    frame = imread(name);
    writeVideo(aviobj,frame);
end
close(aviobj)
%在你存放圖片的路徑下就會又視頻了,高興,這么簡單呀,哈哈哈






%這個沒有試
一,將圖片序列轉化為視頻文件
function video=frames2Video(framesPath,videoName,quality,Compressed,fps,startFrame,endFrame)
%framesPath :圖像序列所在路徑,同時要保證圖像大小相同
%videoName:  表示將要創建的視頻文件的名字
%quality:    生成視頻的質量 0-100
%Compressed: 壓縮類型, 'Indeo3'(默認), 'Indeo5', 'Cinepak', 'MSVC', 'RLE' or 'None'
%fps: 幀率
%startFrame ,endFrame ;表示從哪一幀開始,哪一幀結束

if(exist('videoName','file'))
    delete videoName.avi
end

%生成視頻的參數設定
aviobj=avifile(videoName);  %創建一個avi視頻文件對象,開始時其為空
aviobj.Quality=quality;
aviobj.Fps=fps;
aviobj.compression=Compressed;

%讀入圖片
for i=startFrame:endFrame
    fileName=sprintf('%08d',i);    %根據文件名而定 我這里文件名是00000001.jpg 00000002.jpg ....
    frames=imread([framesPath,fileName,'.jpg']);
    aviobj=addframe(aviobj,uint8(frames));
end
aviobj=close(aviobj); % 關閉創建視頻
end
在command window里輸入
path='你的文件路徑';
frames2Video(path,'dog',90,'None',5,1,32);
二,視頻文件轉化為圖片
function avi2Frames(path)
mov=aviread(path);          
framesNum=size(mov,2);                                           
                                                           
 for i=1:framesNum
  frames=frame2im(mov(i));                              
  str=strcat('a',int2str(i),'.jpg');                         
  imwrite(frames,str);

end
end
代碼未做優化,可以先預分配空間同時對於很多使用程序健壯的語句沒有加進去



免責聲明!

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



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