AVIファイルから画像を取り出す方法がやっと分かった
とりあえず動画再生関数として,ShowAllFramesfromAvifile.mというファイルを作成した例を次に示す.
function ShowAllFramesfromAvifile ( filename ) %ShowAllFramesfromAvifile AVIコンテナ内のフレームをすべて表示 % 返り値 なし % 途中終了したいときは Ctrl+C する.ただし以下のメッセージが表示される % エラー ==> ShowAllFramesfromAvifile at 15 % pause(pausesec); % n秒間待機 info = aviinfo(filename); % AVI情報取得 nframes = info.NumFrames; % フレーム数は NumFramesメンバ が保有 fps = info.FramesPerSecond; % fpsは FramesPerSecondメンバ が保有 pausesec = fps/60; for k=1:nframes avi = aviread(filename, k); % 第kフレームの構造体を得る im = imshow(avi.cdata); % RGBデータは cdataメンバ が保有 pause(pausesec); % n秒間待機 end
今まで,メンバアクセスについて知らなかったためにできなかった.aviinfo()で取り出した構造体から,個別の情報取得ができるか試行し,成功したために先に示した例のように利用した.
さて,画像取得について,他に適切な方法あれば教えてください.aviread(filename, k)が非エレガントに感じるのです.