【Python】ArtistAnimationを使って複数の図からアニメーションを作ってみた
IT技術
ArtistAnimationでアニメーションに挑戦
1つのフォルダに入っている、たくさんの画像や図、写真を連続して表示させて、アニメーション的動画にしたい。
今回は、そんな方のために、コードをPythonで書いて行きたいと思います!
ArtistAnimationとは?
すでに出来上がってる図を、Python でアニメーション化する時の王道は「matplotlib」の「ArtistAnimation」でしょうか。
「matplotlib」からの「ArtistAnimation」の詳細な説明はコチラ!
【matplotlib:ArtistAnimation 説明サイト】
https://matplotlib.org/api/_as_gen/matplotlib.animation.ArtistAnimation.html
ArtistAnimation を使うと、沢山の「jpgファイル」や「pngファイル」を1つのフォルダに入れることで、Pythonで簡単に gifアニメにすることができます。
ちなみに、画像については、写真でもペイントソフトで書いた図でも、問題ありません。
ArtistAnimationの説明
複数の画像を動画化させる「matplotlib」の中の「ArtistAnimation」というコマンドは、下記の関数で出来ています。
ArtistAnimation(fig, artists [, interval] [, repeat delay] [, repeat] [, blit])
うち [] は、デフォルト値が入っていて、省略可能なパラメータです。
パラメータの詳細
各パラメータの意味はコチラになります。
描画のサイズなど。
Figure。
描画したい図のリスト。
list関数にしてください。
(option)
何ミリ秒ごとに図を変えるか。
デフォルトでは200ミリ秒ごと。
numberです。
(option)
アニメーションを繰り返させる場合、終了から再開まで何ミリ秒にするか。
デフォルトでは0。
numberです。
(option)
繰り返しをさせるかどうか。
TrueかFalseかで、デフォルトでは True の繰り返しアリになっています。
(option)
転送するかどうか。
TrueかFalseかで、デフォルトでは False になっています。
ArtistAnimationでアニメーションが完成
それでは、実際に「ArtistAnimation」を使ってみます。
まずは、動画化したい画像を1つのフォルダに入れます。
今回 Python で動画にするのは、下の電磁場解析に関する5つの画像です。
これを「anime」という名前のフォルダに入れました。
この、フォルダに入れる画像の保存形式は、「png」でも「jpg」でも問題ないことを確認しています。
ArtistAnimationデフォルト 軸ありアニメーション
あとは、下記のコードに「図の入ったフォルダ名」「読み込みたいファイル形式」「出来上がった動画の保存ファイル名」を入れるだけです。
1import glob
2from PIL import Image
3
4import matplotlib.pyplot as plt
5import matplotlib.animation as animation
6
7#フォルダ名を入れます
8folderName = "anime"
9
10#該当フォルダから画像のリストを取得。読み込みたいファイル形式を指定。ここではpng
11picList = glob.glob(folderName + "\*.png")
12
13#figオブジェクトの作成
14fig = plt.figure()
15
16#空のリスト作成
17ims = []
18
19#画像ファイルを空のリストの中に1枚ずつ読み込み
20for i in range(len(picList)):
21
22 #読み込んで付け加えていく
23 tmp = Image.open(picList[i])
24 ims.append([plt.imshow(tmp)])
25
26#アニメーション作成
27ani = animation.ArtistAnimation(fig, ims, interval=300, repeat_delay=1000)
28
29#アニメーション保存。ファイル名を入れてください。ここではtest.gif
30ani.save("test.gif")
gifアニメは、プログラムと同じフォルダに作成されます。
完成した動画
出来上がった動画はコチラ!
発表などに使いたいので、interval は「300」と長めにしました。
完成したアニメーションを改善
これでも動画としては、許容範囲かもしれません。
ですが、matplot なだけに、周りに余計な軸がついてしまっています。
そこで、「軸」や「数字」を消したコードはこちらになります。
1import glob
2from PIL import Image
3
4import matplotlib.pyplot as plt
5import matplotlib.animation as animation
6
7#フォルダ名を入れます
8folderName = "anime"
9
10#該当フォルダから画像のリストを取得。読み込みたいファイル形式を指定。ここではpng
11picList = glob.glob(folderName + "\*.png")
12
13#figオブジェクトの作成
14fig = plt.figure()
15
16#figオブジェクトから目盛り線などを消す
17plt.tick_params(bottom=False,
18 left=False,
19 right=False,
20 top=False)
21plt.tick_params(labelbottom=False,
22 labelleft=False,
23 labelright=False,
24 labeltop=False)
25
26#空のリスト作成
27ims = []
28
29#画像ファイルを空のリストの中に1枚ずつ読み込み
30for i in range(len(picList)):
31
32 #読み込んで付け加えていく
33 tmp = Image.open(picList[i])
34 ims.append([plt.imshow(tmp)])
35
36#アニメーション作成
37ani = animation.ArtistAnimation(fig, ims, interval=300, repeat_delay=1000)
38
39#アニメーション保存。ファイル名を入れてください。ここではtest.gif
40ani.save("test.gif")
完成した動画
出来上がりは、こんな感じになりました!
さいごに
いかがだったでしょうか?
ArtistAnimation は、Python で写真や図などを動画化するのに、最も簡単なコマンドの1つだと思います。
上のコードに、アニメーション化したいファイルが入った「フォルダ名」「ファイルの保存形式」「保存したいファイル名(変えなくてもいいです)」を入れるだけなので、とっても簡単です。
ちょっとしたプレゼン、発表などの時にも役立つのではないでしょうか?
ぜひ、ご参考くださいね!
こちらの記事もオススメ!
2020.07.30Python 特集実装編※最新記事順Responder + Firestore でモダンかつサーバーレスなブログシステムを作ってみた!P...
2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
「好きを仕事にするエンジニア集団」の(株)ライトコードです! ライトコードは、福岡、東京、大阪、名古屋の4拠点で事業展開するIT企業です。 現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。 いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。 システム開発依頼・お見積もり大歓迎! また、現在「WEBエンジニア」「モバイルエンジニア」「営業」「WEBデザイナー」を積極採用中です! インターンや新卒採用も行っております。 以下よりご応募をお待ちしております! https://rightcode.co.jp/recruit