読者です 読者をやめる 読者になる 読者になる

MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

jpeg画像列から動画ファイルを作る.

MATLAB


自分はロボットの研究をしているのですが,

研究の分野の都合上,画像処理も少し齧ったことがあります.

実際,どのようなことをやっているかは,また今度の機会にするとして,

今回は知っておくと便利なテクニックについて書きたいと思います.


ある画像列があったとします.

(例えば自分の場合,ロボットが移動している時に

ロボットに搭載されたカメラの画像を時系列順並べたものなど)



その画像列を順番に表示させたものを動画ファイルにしたいと思いませんか?

自分は思ったのです.ある日に.

今回はこれをMATLABで行う手法について説明します.

以下がjpeg画像列を読み込んで,その画像列を順に表示させて,

その動画をaviファイルに保存するためのプログラムです.


clear all;
close all;

aviobj = avifile('image.avi','fps',2);

ImgN=1531;
for i=1:5:ImgN
    %Image Read
    Imgfilename = strcat('./img/',num2str(i),'.jpg');
    A=imread(Imgfilename);
    image(A)
    axis off;
    drawnow;
    
    M = getframe(GCF);
    aviobj = addframe(aviobj,M);
    
end

aviobj = close(aviobj);

画像の読み込み方法については前回の記事を参照してください.
複数の画像を読み込みたい時 - MY ENIGMA

このサンプルプログラムでは5枚とばしで画像を読み込んでいます.

基本的にはgetframeで表示されている画像情報を取得して,

addframeで動画データaviobjにフレームを加えます.

それをforループで繰り返して,動画ファイルを作っているといった感じです.

最後にcloseするのを忘れないようにしましょう.



これでめでたしめでたし.