5

私は新たにMatlabを使用しています。ビデオファイルを読み、フレームごとに計算を行い、フレームごとに表示したいと思います。次のコードを書きましたが、毎回最初のフレームしか表示されません。誰か助けてくれませんか。

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

end
4

4 に答える 4

10

注: mmreaderAPI は MATLAB によって廃止されたため、使用することをお勧めしVideoReaderます。

@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
于 2013-03-21T03:31:28.547 に答える
1

関数 read() とフィールド NumberOfFrames() は非推奨になりました。Matlab は使用を推奨しています。

xyloObj = VideoReader(file);
vidHeight = xyloObj.Height;
vidWidth = xyloObj.Width;
mov = struct('cdata',zeros(vidHeight, vidWidth, 3,'uint8'), 'colormap',[]);

while hasFrame(xyloObj)
    mov(k).cdata = readFrame(xyloObj,'native');     
end

ビデオのフレーム数を推定したい場合は、nFrames = floor(xyloObj.Duration) * floor(xyloObj.FrameRate);

于 2016-08-14T00:46:37.853 に答える