動画の作成
動画を作成するために、まずは各時刻での絵を順番に描いていく作業を関数とする。
def PlotContour2(): color = 'r' num = 0 fig = figure() ax = fig.add_subplot(111) for k in range(1, Util.dam_dam[0]+1): num += 1 ion() for i in range(Util.sens_num_ini+8): if i >= 122: color = '#FFFFFF' elif int(Util.dam_dam[k][i][0]) == 3: color = '#CC0033' elif int(Util.dam_dam[k][i][0]) == 2: color = '#FFCC99' elif int(Util.dam_dam[k][i][0]) == 1: color = '#FFFF33' elif int(Util.dam_dam[k][i][0]) == 0: color = '#FFFFFF' x = Util.cordx[i] y = Util.cordy[i] ax.fill(x, y, color) ax.axis('off') ax.text(5,100,"Front", fontsize=20) ax.text(53,100,"Back", fontsize=20) line, = fill(x, y, color) draw() filename = 'anim' + str(num) fig.savefig(filename)
とりあえず、こうした。このままだといろいろ問題がある。
- ion()をコメントアウト---インタラクティブモードがオンだと、図を描く過程が見える。しかし、無駄な時間がかかるのでオフにする。→処理が少し速くなる。
- このルーチンを実行すると、PCのファンの回転音が大きくなる。CPUをほとんど占有してしまう。PCのスペックにきっと依存するから気にしない。
- 変数numはいらない。kで代用できる。
- fig.add_subplot(111)は必ず必要。
- line, =... はいらない。
- draw() はいらない。
- IF文の箇所をより簡潔に書く。
以上を踏まえて、修正すると下のようになった。
def PlotContour2(): """ 動画の作成 """ fig = figure() ax = fig.add_subplot(111) colors = ['#FFFFFF', '#FFFF33', '#FFCC99', '#CC0033'] for k in range(1, Util.dam_dam[0]+1): for i in range(Util.sens_num_ini+8): if i >= 122: color = colors[0] else: color = colors[int(Util.dam_dam[k][i][0])] x = Util.cordx[i] y = Util.cordy[i] ax.fill(x, y, color) ax.axis('off') ax.text(5,100,"Front", fontsize=20) ax.text(53,100,"Back", fontsize=20) filename = 'anim' + str(k) fig.savefig(filename) print u"info> 動画用の%s番目の画像を保存しました。ファイル名は%sです。"\ % (k, filename) print u"info> 動画作成を終了します。"
これで、一連の画像をpngファイルに出力することができるようになった。
やっとできた。手間かけすぎ。
次の作業としては、
- 各画像の中で時刻を表示したい。→ax.textを使えば簡単だろう。
- 各画像の中に事前に用意してある他の画像ファイルを入れ込む。→分からないから調べる。
- 一連の画像を動画にまとめる部分を実装する。→動画作成プログラムを決めることから。
をやらなくては。