【matlab】使用VideoReader提取视频的每一帧,不能用aviread函数~

这个问题是matlab版本问题,已经不用aviread函数了~

VideoReader里面没有cdata这个函数!

MATLAB不支持avireader了,

而且没有cdata这个属性了,详情去官网

http://www.mathworks.cn/cn/help/matlab/ref/videoreaderclass.html

cdata 是MATLAB里存放图像数据的一个矩阵,你可以使用get语句去得到他的句柄,然后做相应的图像处理。

------------------------------------------------

以前:使用aviread:(现在不用这种了)

整段程序示例一:

avi格式视频的读取和显示(Matlab代码)

  cdata: M x N x 3 的矩阵用来表示真彩色的图像

clear data                                                                              
disp(\'input video\');                     % 显示 "input video"
avi = aviread(\'samplevideo.avi\');        % avi: MATLAB movie structure
video = {avi.cdata};                     % cdata: M x N x 3 的矩阵用来表示真彩色的图像
for a = 1:length(video)                  % length(video)表示这段视频的帧数
    imshow(video{a})                     %按帧数顺序显示图像
    drawnow;                                            
end

--------------------------------------

整段程序示例二:

avi格式视频的读取和倒放(Matlab代码)

clear data                                                                              
disp(\'input video\');                            % 显示字符串 "input video",disp功能类似于c语言中的print;java语言中的System.out.println();
avi = aviread(\'samplevideo.avi\');               % avi: MATLAB movie structure
video = {avi.cdata};                            % cdata: M x N x 3 的矩阵用来表示真彩色的图像
for a = length(video) :-1:1                     % length(video)表示这段视频的帧数
    imshow(video{a})                            %按帧数倒序显示图像
    drawnow;                                            
end                

以后应该用:VideoReader!

现在:使用VideoReader提取视频的每一帧~

fileName = \'D:\Work\car.avi\';  
obj = VideoReader(fileName); 
numFrames = obj.NumberOfFrames;                     % 读取视频的帧数  
for i = 1 : numFrames      
    frame = read(obj,i);                            % 读取每一帧      
    imshow(frame);                                  %显示每一帧      
    imwrite(frame,strcat(num2str(i),\'.jpg\'),\'jpg\'); % 保存每一帧 
end