%下面不規范的注釋就不用介意了
%手動選擇存有圖片的文件夾
srcDic = uigetdir('C:\Users\NEVERGUVEIP\Desktop\機器學習\my_train');
[k,len]=size(allnames);
aviobj = VideoWriter('driver.avi');%給視頻起名字
aviobj.FrameRate = 5;%設置幀率
name = allnames{1,i};
frame = imread(name);
writeVideo(aviobj,frame);
end
close(aviobj)
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
代碼未做優化,可以先預分配空間 。
同時對於很多使用程序健壯的語句沒有加進去