最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。
VideoReader
と VideoWriter
を使用して、ビデオ ファイルとイメージ ファイルのシーケンスとの間で変換します。
shuttle.avi
というサンプル ファイルには、121 枚のフレームが含まれています。VideoReader
および関数 imwrite
を使用し、これらのフレームをイメージ ファイルに変換します。次に、VideoWriter
を使用して、このイメージ ファイルを AVI ファイルに変換します。
イメージ シーケンスを保存するための一時作業フォルダーを作成します。
workingDir = tempname;
mkdir(workingDir)
mkdir(workingDir,'images')
ファイルからのフレーム読み取りに使用する 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 ファイルの名前を検出します。イメージ名のセットを cell 配列に変換します。
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 のサイズを調整し、ムービーの最初のフレームを表示します。
figure imshow(mov(1).cdata, 'Border', 'tight')
ビデオのフレーム レートでムービーを 1 回再生します。
movie(mov,1,shuttleAvi.FrameRate)
Video of the Space Shuttle courtesy of NASA.