我最近在Matlab工作。我想读取视频文件,并在每帧进行一些计算并显示每帧。我编写了以下代码,但是每次只显示第一帧。有人可以帮忙吗?

mov=VideoReader('c:\vid\Akiyo.mp4');
nFrames=mov.NumberOfFrames;
for i=1:nFrames
  videoFrame=read(mov,i);
  imshow(videoFrame);

end

最佳答案



参见@Vivek的评论。

我通常这样做:

obj=mmreader('c:\vid\Akiyo.mp4');
nFrames=obj.NumberOfFrames;
for k=1:nFrames
    img=read(obj,k);
    figure(1),imshow(img,[]);
end

就您的代码而言,我看到了MATLAB的文档。您应该按照以下顺序进行操作:
mov=VideoReader('c:\vid\Akiyo.mp4');
vidFrames=read(mov);
nFrames=mov.NumberOfFrames;
for i=1:nFrames
   imshow(vidFrames(:,:,i),[]);  %frames are grayscale
end

09-06 11:30