こんにちは、21日目を担当します。好きな図形は斜め45度の三角形こと、すぱさんです!
TwitterもGithubと同じユーザIDでやっているのですが、大丈夫です!生きてます!アハハハ
ではでは、さっそくやっていきましょう!
今回はPythonのライブラリで大量の写真からタイムラプス動画を生成するというテーマです!
でも、なんでPythonでやるんさ?フリーソフト出てるだろ、そんぐらい。と思われるかもしれませんが、これがあんまりない!あっても、無料版は制限がかかってしつこい!なら、もうプログラミング言語のライブラリとかで作れるんじゃない?で検索したらありました、MoviePy。
タイムラプス専用のライブラリではありませんが、その一部にタイムラプスみたいに画像を1秒間に何枚表示して動画を作成するという機能がありました。
他にもタイムラプスを作るライブラリはあったのですが、いろんな機能があるライブラリのMoviePyにしてみました。(と言って、この機能しか使っていないけど(笑))
Windowsをメインに使っていますが、コマンドをポチポチ打つことが多いときは、Vagrantでubuntuのインスタンスを立ち上げてぶん回してます。
では、Pythonのpip
コマンドを使ってインストールします。
$ sudo pip3 install moviepy
他にもMoviePyでいろいろする上で他のライブラリなどをインストールする必要がありますが、今回はその必要が無いので、無視します。
スクリプトのインポートをします
from moviepy.video.io.ImageSequenceClip import ImageSequenceClip
このImageSequenceClip
が今回使う関数です。
第一引数には「画像の名前リスト」、「フォルダ名」、「Numpyのフレーム(ほかの動画の列)」などを指定することができるみたいです。
今回は、2000枚ほどある画像を一つの動画にするので、「フォルダ名」、正確には「フォルダへのパス」を渡すことにしました。
あとは、一秒間に表示されたい画像の枚数(fps)を指定するだけ。通常、映像は24fpsとか30fps、60fpsでみるので、まずそれらの値で確認してみて、調整しましょう。
フォルダへのパス、出力するファイル名、fps値を指定して生成するためのスクリプトをGithubに公開したので、ぜひお試しあれ!
過去に、Googleが出していたPicasaで作成したタイムラプスです。
撮影場所は、群馬県前橋市の東部バイパスと17号の交差点の歩道橋で撮影しました。