Main Content

readFrame

次のビデオ フレームの読み取り

説明

video = readFrame(v) は、v に関連付けられているファイルから読み取り可能な次のビデオ フレームを読み取ります。

video = readFrame(v,'native') は、VideoFormat プロパティによって指定された形式でデータを返します。

すべて折りたたむ

サンプル ビデオ ファイル xylophone_video.mp4VideoReader オブジェクトを作成します。

v = VideoReader("xylophone_video.mp4");

ビデオから、1 フレームずつすべてのフレームを読み取ります。

while hasFrame(v)
    frame = readFrame(v);
end

readFrame によって返された最後のフレームに関する情報を表示します。

whos frame
  Name         Size                Bytes  Class    Attributes

  frame      240x320x3            230400  uint8              

VideoReader オブジェクトをクリアします。

clear v

サンプル ビデオ ファイル xylophone_video.mp4VideoReader オブジェクトを作成します。

v = VideoReader("xylophone_video.mp4");

ビデオの先頭から 2.5 秒後にフレームの読み取りを開始するように指定します。

v.CurrentTime = 2.5;

フレームを表示する axes オブジェクトを作成します。次に、読み取り可能なフレームがなくなるまで、ビデオ フレームの読み取りと表示を続行します。

currAxes = axes;
while hasFrame(v)
    vidFrame = readFrame(v);
    image(vidFrame,"Parent",currAxes)
    currAxes.Visible = "off";
    pause(1/v.FrameRate)
end

Figure contains an axes object. The axes object contains an object of type image.

Figure contains an axes object. The axes object contains an object of type image.

VideoReader オブジェクトをクリアします。

clear v

サンプル ビデオ ファイル xylophone_video.mp4VideoReader オブジェクトを作成します。次にビデオの幅と高さを決めます。

xyloObj = VideoReader("xylophone_video.mp4");
vidWidth = xyloObj.Width;
vidHeight = xyloObj.Height;

ビデオ構造体配列を作成します。

mov = struct("cdata",zeros(vidHeight,vidWidth,3,"uint8"),colormap=[]);

ビデオの最後までフレームを 1 つずつ読み取ります。

k = 1;
while hasFrame(xyloObj)
    mov(k).cdata = readFrame(xyloObj);
    k = k+1;
end

ビデオの幅と高さに基づいて Figure のサイズを設定し、ビデオを 1 回再生します。

vf = figure(Position=[0 0 xyloObj.Width xyloObj.Height]);
imshow(mov(1).cdata,Border="tight")
movie(vf,mov,1,xyloObj.FrameRate)

Figure contains an axes object. The axes object contains an object of type image.

VideoReader オブジェクトをクリアします。

clear xyloObj

入力引数

すべて折りたたむ

入力 VideoReader オブジェクト。関数 VideoReader を使用してビデオ ファイルから VideoReader オブジェクトを作成します。

出力引数

すべて折りたたむ

ビデオ フレーム データ。配列として返されます。video の次元とデータ型は objVideoFormat プロパティで決まります。

次の表は、video のデータ型と次元をファイル形式別にリストしたものです。H はイメージ フレームの高さを示し、W はイメージ フレームの幅を示します。objVideoFormat プロパティが 'Indexed' の場合、video のデータ型と次元は引数 'native' を指定して readFrame を呼び出したかどうかによって決まります。

obj.VideoFormat の値video のデータ型video の次元説明
'RGB24' ('native' の指定はオプション)uint8

H x W x 3

RGB24 イメージ

'Grayscale' (次を指定しない) 'native'uint8

H x W x 1

グレースケール イメージ

'Indexed' (次を指定しない) 'native'uint8

H x W x 3

RGB24 イメージ

'Grayscale' または 'Indexed' ('native' を指定する)struct

1 行 1 列

MATLAB® ムービー。フレーム構造体配列の配列。各配列にはフィールド cdatacolormap があります。

Motion JPEG 2000 のファイルでは、video のデータ型と次元は次のようになります。

obj.VideoFormat の値video のデータ型video の次元説明
'Mono8'uint8

H x W x 1

モノ イメージ

'Mono8 Signed'int8

H x W x 1

モノ符号付きイメージ

'Mono16'uint16

H x W x 1

モノ イメージ

'Mono16 Signed'int16

H x W x 1

モノ符号付きイメージ

'RGB24'uint8

H x W x 3

RGB24 イメージ

'RGB24 Signed'int8

H x W x 3

RGB24 符号付きイメージ

'RGB48'uint16

H x W x 3

RGB48 イメージ

'RGB48 Signed'int16

H x W x 3

RGB48 符号付きイメージ

制限

  • Windows® 上の一部の AVI、MOV、または MP4 ファイルでは、関数 readFrame を使用してファイル内のすべてのフレームを読み取った結果のフレーム数が、VideoReader オブジェクトの NumFrames プロパティによって返される値と異なる場合があります。

拡張機能

バージョン履歴

R2014b で導入