readFrame
次のビデオ フレームの読み取り
説明
例
VideoReader
オブジェクトの作成とビデオの読み取り
サンプル ビデオ ファイル xylophone_video.mp4
の VideoReader
オブジェクトを作成します。
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.mp4
の VideoReader
オブジェクトを作成します。
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
VideoReader
オブジェクトをクリアします。
clear v
ムービー ファイルの読み取りと再生
サンプル ビデオ ファイル xylophone_video.mp4
の VideoReader
オブジェクトを作成します。次にビデオの幅と高さを決めます。
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)
VideoReader
オブジェクトをクリアします。
clear xyloObj
入力引数
v
— 入力 VideoReader
オブジェクト
VideoReader
オブジェクト
入力 VideoReader
オブジェクト。関数 VideoReader
を使用してビデオ ファイルから VideoReader
オブジェクトを作成します。
出力引数
video
— ビデオ フレーム データ
配列
ビデオ フレーム データ。配列として返されます。video
の次元とデータ型は obj
の VideoFormat
プロパティで決まります。
次の表は、video
のデータ型と次元をファイル形式別にリストしたものです。H
はイメージ フレームの高さを示し、W
はイメージ フレームの幅を示します。obj
の VideoFormat
プロパティが 'Indexed'
の場合、video
のデータ型と次元は引数 'native'
を指定して readFrame
を呼び出したかどうかによって決まります。
obj.VideoFormat の値 | video のデータ型 | video の次元 | 説明 |
---|---|---|---|
'RGB24' ('native' の指定はオプション) | uint8 |
| RGB24 イメージ |
'Grayscale' (次を指定しない) 'native' | uint8 |
| グレースケール イメージ |
'Indexed' (次を指定しない) 'native' | uint8 |
| RGB24 イメージ |
'Grayscale' または 'Indexed' ('native' を指定する) | struct | 1 行 1 列 | MATLAB® ムービー。フレーム構造体配列の配列。各配列にはフィールド |
Motion JPEG 2000 のファイルでは、video
のデータ型と次元は次のようになります。
obj.VideoFormat の値 | video のデータ型 | video の次元 | 説明 |
---|---|---|---|
'Mono8' | uint8 |
| モノ イメージ |
'Mono8 Signed' | int8 |
| モノ符号付きイメージ |
'Mono16' | uint16 |
| モノ イメージ |
'Mono16 Signed' | int16 |
| モノ符号付きイメージ |
'RGB24' | uint8 |
| RGB24 イメージ |
'RGB24 Signed' | int8 |
| RGB24 符号付きイメージ |
'RGB48' | uint16 |
| RGB48 イメージ |
'RGB48 Signed' | int16 |
| RGB48 符号付きイメージ |
制限
Windows® 上の一部の AVI、MOV、または MP4 ファイルでは、関数
readFrame
を使用してファイル内のすべてのフレームを読み取った結果のフレーム数が、VideoReader
オブジェクトのNumFrames
プロパティによって返される値と異なる場合があります。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限:
readFrame
のコード生成で、オプションの位置引数native
はサポートされません。行優先のレイアウトを使用するコードを生成 — 行優先の配列レイアウトを使用するコードの生成 (MATLAB Coder)
配列サイズの制限 — コードを生成する場合、配列の最大要素数は、コード ジェネレーターとターゲット ハードウェアによって制限されます。詳細については、コード生成における配列サイズの制限 (MATLAB Coder)を参照してください。
バージョン履歴
R2014b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)