我们在对视频分析的时候免不了要将视频存成一帧帧的图片形式,以下是matlab将视频分成图片的实现代码。
目录结构
set1/类别/*.avi
直接上代码
video_source_path = 'G:\action_predict\TV human Interaction\videos\set1';%源地址
image_aim_path = 'G:\action_predict\TV human Interaction\images\set1';%目标地址
dirs=dir(video_source_path);
dirs_list={dirs.name};
for i=3:size(dirs_list,2)
i
class_name=dirs_list{i};
dirs2=dir(fullfile(video_source_path,class_name,'*.avi'));
dirs_list2={dirs2.name};
for j=1:size(dirs_list2,2)
video_name=dirs_list2{j};
image_path=fullfile(image_aim_path,class_name,video_name(1:end-4));
video_path=fullfile(video_source_path,class_name,video_name);
if ~exist(image_path)
mkdir(image_path);
end
videohandle=VideoReader(video_path);
videoFrames=read(videohandle);
[~,~,~,video_num]=size(videoFrames);
for k=1:1:video_num
mov(k).cdata = videoFrames(:,:,:,k);
mov(k).colormap = [];
frame_name=strcat(video_name(1:end-4),'_',num2str(k),'.jpg');
frame_path=fullfile(image_path,frame_name);
imwrite(mov(k).cdata, frame_path,'jpg');
end
end
end