私は新たにMatlabを使用しています。ビデオファイルを読み、フレームごとに計算を行い、フレームごとに表示したいと思います。次のコードを書きましたが、毎回最初のフレームしか表示されません。誰か助けてくれませんか。
mov=VideoReader('c:\vid\Akiyo.mp4');
nFrames=mov.NumberOfFrames;
for i=1:nFrames
videoFrame=read(mov,i);
imshow(videoFrame);
end
注:
mmreader
API は 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
関数 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);