昨晩はPythonでopencv使って顔検出で遊んでました。
昔のコードを引っ張り出してコードをいじりながら遊んでいたのですが、いやはや、こういうのは面白くてついついやってしまいますね。
気づけば時間が溶けていて夜更かししてしまいました。
さて、顔検出で無数の画像を繋ぎ合わせてgif化したいと思った際にサクッと画像を繋ぎ合わせてgif動画を作るスクリプトを書きました。
pillowが必要になるのでインストールした上で利用してください。
pip install Pillow
スクリプトはこちらになります。
なお、下記の定数の値を変更することで作成されるGIFの内容を変更できるようにしています。
- IMAGE_COUNT_LIMIT - 利用する画像の上限枚数(大量に画像がある場合、エラーになるので今は200を上限しています)
- DURATION - 一枚の画像に対する表示時間となります。数を低くすると、GIFがよりなめらか(細かく)表示されるようになります
from PIL import Image from os import path from glob import glob import sys IMAGE_COUNT_LIMIT = 200 DURATION = 100 def create_gif(input_dir, output_filename): fp_list = sorted(glob(path.join(*[input_dir, '*']))) images = [] for i, fp in enumerate(fp_list): images.append(Image.open(fp)) if(i == IMAGE_COUNT_LIMIT): break images[0].save(output_filename, save_all=True, append_images=images[1:], optimize=False, duration=DURATION, loop=0) print("Successful") if __name__ == "__main__": args = sys.argv usage_text = """Usage: python make_git.py <input_dir_name> <output_filename>""" if len(args) != 3: print(usage_text) sys.exit() input_dir = args[1] output_filename = args[2] print("Input dir: ", input_dir) print("Output filename: ", output_filename) create_gif(input_dir, output_filename)
引数の処理を始め、ところどころ手抜き感はありますが、まあ使い捨てのスクリプトということで大目に見てください。
使い方は下記のとおりです。
python make_git.py <input_dir_name> <output_filename>