Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

readFrame

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

説明

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

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

すべて折りたたむ

例のムービー ファイル xylophone.mp4 用の VideoReader オブジェクトを作成します。

v = VideoReader('xylophone.mp4');

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

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

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

whos frame
  Name         Size                Bytes  Class    Attributes

  frame      240x320x3            230400  uint8              

ビデオ リーダー オブジェクトを作成し、特定の時間からビデオ フレームを読み取ります。

例のムービー ファイル xylophone.mp4 を読み取るオブジェクトを作成します。

v = VideoReader('xylophone.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

サンプル ムービー ファイル xylophone.mp4 の読み取りと再生を行います。

サンプル ファイルからデータを読み取る VideoReader オブジェクトを作成します。次にビデオの幅と高さを決めます。

xyloObj = VideoReader('xylophone.mp4');

vidWidth = xyloObj.Width;
vidHeight = xyloObj.Height;

ムービー構造体配列 mov を作成します。

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 回再生します。

hf = figure;
set(hf,'position',[150 150 vidWidth vidHeight]);

movie(hf,mov,1,xyloObj.FrameRate);

入力引数

すべて折りたたむ

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

出力引数

すべて折りたたむ

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

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

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 符号付きイメージ

VideoFormat プロパティで指定された形式を使用するためのフラグ。文字ベクトルまたは string スカラー 'native' として指定します。

データ型: char | string

制限

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

拡張機能

R2014b で導入