mov = mmread('answer.avi');%读入视频
VFrames = size(mov,1); %读取视频的帧数 总之呢,就是你的VFrames的值有问题啊。。。
for k =1 : VFrames
strtemp=strcat('D:\Documents\MATLAB\frames\',int2str(k),'.','jpg');
imwrite(mov(k).frames(k).cdata(:,:,:),strtemp);
end
用我的代码吧!
%% 将视频分成连续帧
clc;
clear;
%% 读取视频
video_file='C:\Users\1512088285\Desktop\shipinha海参\剪切后\我的电影2.mp4';
video=VideoReader(video_file);
frame_number=floor(video.Duration * video.FrameRate);
%% 分离图片
for i=1:50:frame_number
image_name=strcat('C:\Users\1512088285\Desktop\shipinha海参\剪切后\',num2str(i));%'D:\Ship_Video1\'视频所在路径,在后面 ,num2str(i))转成字符起到生成名字作用,('D:\Ship_Video1\',num2str(i))‘’ 函数('D:\Ship_Video1\',num2str(i)),起到路径引导,image_name,'.jpg'起到字符连接
image_name=strcat(image_name,'.jpg');
I=read(video,i); %读出图片 视频分帧读取,并保存成四维数组
imwrite(I,image_name,'jpg'); %写图片
I=[];
end
%%
%我的视频是放在C:\Users\1512088285\Desktop\shipinha海参\剪切后\我的电影2文件夹下,最后视频分成的一帧一帧的图像是放在C:\Users\1512088285\Desktop\shipinha海参\剪切后\我的电影2的文件夹下。
% % 最终在D盘的Ship_Video1生成5帧图像,帧数是可以设置的。