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'

VideoWriter オブジェクトを書き込み用に開き、A のイメージ データをファイルに書き込みます。

open(v)
writeVideo(v,A)

VideoWriter オブジェクトを閉じます。

close(v)

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

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

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

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

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

v.Colormap = map;

VideoWriter オブジェクトを書き込み用に開きます。v を開いた後は、そのプロパティを変更することはできません。

open(v)

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

writeVideo(v,X)

VideoWriter オブジェクトを閉じます。

close(v)

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

reader = VideoReader("xylophone_video.mp4");
writer = VideoWriter("transcoded_xylophone.avi","Uncompressed AVI");

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

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

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

VideoReader オブジェクトをクリアして VideoWriter オブジェクトを閉じます。

clear reader
close(writer)

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

Z = peaks;
surf(Z);
axis tight manual

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

set(gca,"NextPlot","replacechildren")

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

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

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

VideoWriter オブジェクトを閉じます。

close(v)

入力引数

すべて折りたたむ

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

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

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

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

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

  • RGB イメージのシーケンスの場合、img は高さ×幅×3×フレームの 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 次元 (高さ×幅) の配列となります。高さと幅は 1 つのファイル内の全フレームで一貫していなければなりません。

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

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

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

'Indexed AVI'

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

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

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

データ型: struct

バージョン履歴

R2010b で導入