Main Content

writeVideo

ビデオ データをファイルに書き込む

説明

writeVideo(v,img) は、配列のデータを v に関連付けられているビデオ ファイルに書き込みます。

writeVideo を呼び出す前に open(v) を呼び出さなければなりません。

writeVideo(v,frame) は、一般に関数 getframe で返される 1 つ以上のムービー フレームを書き込みます。

すべて折りたたむ

可逆圧縮を使用して RGB イメージを Motion JPEG 2000 ファイルに書き込みます。

サンプルの静止画 peppers.png からのデータを含む配列を作成します。

A = imread('peppers.png');

新しいビデオ ファイル用に VideoWriter オブジェクトを作成します。'Archival' プロファイルを使用して可逆圧縮の Motion JPEG 2000 ファイルを指定します。

v = VideoWriter('myFile','Archival');

新しいファイルに使用するビデオ圧縮の種類を確認します。

v.VideoCompressionMethod
ans = 
'Motion JPEG 2000'

ビデオ ファイルを書き込み用に開きます。続いて A のイメージ データをファイルに書き込みます。

open(v)
writeVideo(v,A)

ビデオ ファイルを閉じます。

close(v)

サンプルのインデックス付きイメージ ファイル corn.tif からイメージとカラーマップ データを読み取ります。

[X,map] = imread('corn.tif');

新しいインデックス付き AVI ファイル用に VideoWriter オブジェクトを作成します。

v = VideoWriter('myIndexed.avi','Indexed AVI');

vColormap プロパティにカラーマップ データを代入します。

v.Colormap = map;

書き込み用にファイルを開きます。ファイルを開いた後で v のプロパティを変更することはできません。

open(v)

X のイメージ データをビデオ ファイルに書き込みます。その後ファイルを閉じます。

writeVideo(v,X)
close(v)

サンプル ファイル xylophone.mp4 を非圧縮 AVI ファイルに変換します。

ビデオの読み書きを行うオブジェクトを作成し、書き込み対象の AVI ファイルを開きます。

reader = VideoReader('xylophone.mp4');
writer = VideoWriter('transcoded_xylophone.avi', ...
                        'Uncompressed AVI');

writer.FrameRate = reader.FrameRate;
open(writer);

各フレームの読み書きを行います。

while hasFrame(reader)
   img = readFrame(reader);
   writeVideo(writer,img);
end

close(writer);

フレームのシーケンスを圧縮 AVI ファイルに書き込みます。最初に一連のフレームを生成し、書き込むファイルのビデオ オブジェクトを作成してから、フレームをビデオ ファイルに書き込みます。

ビデオのフレームの生成に使用する座標軸と Figure のプロパティを設定します。

Z = peaks;
surf(Z); 
axis tight manual 
set(gca,'nextplot','replacechildren'); 

出力ビデオ ファイルのビデオ ライター オブジェクトを作成し、オブジェクトを書き込み用に開きます。

v = VideoWriter('peaks.avi');
open(v);

一連のフレームを生成し、Figure からフレームを取得して、各フレームをファイルに書き込みます。

for k = 1:20 
   surf(sin(2*pi*k/20)*Z,Z)
   frame = getframe(gcf);
   writeVideo(v,frame);
end

close(v);

入力引数

すべて折りたたむ

入力 VideoWriter オブジェクト。VideoWriter を使用してオブジェクトを作成します。

グレースケールまたは RGB カラー イメージを表す値。2 次元、3 次元または 4 次元の配列として次のように指定します。

  • 1 つのグレースケール、モノクロまたはインデックス付きイメージの場合、img は 2 次元 (高さ x 幅) でなければなりません。

  • 1 つのトゥルーカラー RGB イメージの場合、img は高さ x 幅 x 3 の 3 次元でなければなりません。

  • グレースケール イメージのシーケンスの場合、img は高さ x 幅 x 1 x フレームの 4 次元でなければなりません。高さと幅は 1 つのファイル内の全フレームで一貫していなければなりません。

  • RGB イメージのシーケンスの場合、img は高さ x 幅 x 3 x フレームの 4 次元でなければなりません。高さと幅は 1 つのファイル内の全フレームで一貫していなければなりません。

AVI または MPEG-4 ファイルを作成する場合:

  • img は、1 つ以上のグレースケールまたは RGB カラー イメージを表す singledouble または uint8 値の配列です。writeVideo はこの値を 1 つ以上の RGB ビデオ フレームとして書き込みます。

  • インデックス付き AVI ファイルを書き込む場合を除いて、single 型または double 型のデータは [0,1] の範囲内でなければなりません。

Motion JPEG 2000 ファイルを作成する場合:

  • img は、1 つ以上のモノクロまたは RGB カラー イメージを表す uint8int8uint16 または int16 値の配列です。

データ型: single | double | int8 | int16 | uint8 | uint16

フレーム データ。1 フレームを表す 1 行 1 列の構造体配列、または複数のフレームを表す 1 行 F 列の構造体配列として指定します。各フレームに cdatacolormap の 2 つのフィールドが含まれます。frame 配列は通常、関数 getframe で返されます。

colormap が空でない場合、cdata の各要素は 2 次元 (高さ x 幅) の配列となります。高さと幅は 1 つのファイル内の全フレームで一貫していなければなりません。

colormap には最大 256 個のエントリを含めることができます。colormap の各要素は、[0,1] の範囲内になければなりません。

VideoWriter オブジェクトを作成する場合、profile の入力と cdata のサイズによって writeVideoframe を使用する方法が決まります。

VideoWriter オブジェクトの profilecdata の各要素のサイズ writeVideo の動作

'Indexed AVI'

2 次元 (高さ x 幅)提供されたフレームをそのまま使用します。
'Grayscale AVI'2 次元 (高さ x 幅)提供されたフレームをそのまま使用します。colormap は空でなければなりません。

他のすべてのプロファイル

2 次元 (高さ x 幅)colormap フィールドを使用して RGB イメージ フレームを作成します。
3 次元 (高さ x 幅 x 3)colormap フィールドは無視します。cdata フィールドを使用して RGB イメージ フレームを作成します。

データ型: struct

バージョン履歴

R2010b で導入