ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

イメージ シーケンスとビデオとの間の変換

この例では、VideoReader および VideoWriter を使用してビデオ ファイルとイメージ ファイルのシーケンスとの間で変換する方法を示します。

shuttle.avi という名前のサンプル ファイルには、121 のフレームが含まれています。VideoReader および関数 imwrite を使用し、このフレームをイメージ ファイルに変換します。次に、VideoWriter を使用して、このイメージ ファイルを AVI ファイルに変換します。

設定

イメージ シーケンスを保存するための一時作業フォルダーを作成します。

workingDir = tempname;
mkdir(workingDir)
mkdir(workingDir,'images')

VideoReader の作成

ファイルからのフレーム読み取りに使用する VideoReader を作成します。

shuttleVideo = VideoReader('shuttle.avi');

イメージ シーケンスの作成

ビデオ内で繰り返し、img という名前の高さ x 幅 x 3 の配列に各フレームを読み取ります。imgN.jpg という形式の名前をもつ JPEG ファイルに各イメージを書き込みます。N はフレーム番号です。

      img001.jpg
      img002.jpg
      ...
      img121.jpg
ii = 1;

while hasFrame(shuttleVideo)
   img = readFrame(shuttleVideo);
   filename = [sprintf('%03d',ii) '.jpg'];
   fullname = fullfile(workingDir,'images',filename);
   imwrite(img,fullname)    % Write out to a JPEG file (img1.jpg, img2.jpg, etc.)
   ii = ii+1;
end

イメージ ファイル名の検索

images フォルダーにあるすべての JPEG ファイルの名前を検出します。イメージ名のセットをセル配列に変換します。

imageNames = dir(fullfile(workingDir,'images','*.jpg'));
imageNames = {imageNames.name}';

イメージ シーケンスによる新しいビデオの作成

既定で Motion-JPEG AVI ファイルを作成する VideoWriter オブジェクトを作成します。

outputVideo = VideoWriter(fullfile(workingDir,'shuttle_out.avi'));
outputVideo.FrameRate = shuttleVideo.FrameRate;
open(outputVideo)

イメージ シーケンス内で繰り返し、各イメージを読み込み、それをビデオに書き込みます。

for ii = 1:length(imageNames)
   img = imread(fullfile(workingDir,'images',imageNames{ii}));
   writeVideo(outputVideo,img)
end

ビデオ ファイルを完成します。

close(outputVideo)

最終的なビデオの表示

リーダー オブジェクトを作成します。

shuttleAvi = VideoReader(fullfile(workingDir,'shuttle_out.avi'));

ビデオ フレームから、MATLAB ムービー構造体を作成します。

ii = 1;
while hasFrame(shuttleAvi)
   mov(ii) = im2frame(readFrame(shuttleAvi));
   ii = ii+1;
end

ビデオの幅および高さに基づいて現在の Figure および Axes のサイズを調整し、ムービーの最初のフレームを表示します。

f = figure;
f.Position = [150 150 shuttleAvi.Width shuttleAvi.Height];

ax = gca;
ax.Units = 'pixels';
ax.Position = [0 0 shuttleAvi.Width shuttleAvi.Height];

image(mov(1).cdata,'Parent',ax)
axis off

ビデオのフレーム レートでムービーを 1 回再生します。

movie(mov,1,shuttleAvi.FrameRate)

著作権表示

Video of the Space Shuttle courtesy of NASA.

この情報は役に立ちましたか?