こんにちは、潔く銀です。
前回は、動画から静止画にするプログラムを作りました。今回は、その逆である静止画から動画にするプログラムを作成しました。こちらは、需要があるかわかりませんが作ってみたので良かったら見てください。
今回のコードは、天体写真のタイムラプス動画を作成するために自作しました。自分で作成した方が使いやすいですからね(笑)
ソースコードはコピペしてもらえると使えるようになります。使う際は、ファイルパスなどは確認してください。
動作環境
- Macbook Air 2013mid
- Anaconda 4.5.11
- Python 3.6.3
- Opencv3.4.3
ソースコード
import cv2 import glob import os import shutil import time """ parameta """ frame_size = -1 #FHD=0, 4K=1 frame_rate = 30.0 #FPS """ end """ """ size set""" if frame_size == 0: #FHD Timelaps動画用 width = 1920 height = 1080 elif frame_size ==1: #4K Timelasp動画用 width = 3840 height = 2160 else: #小さめに作る width = 640 height = 360 """ """ def timelaps(images): fourcc = cv2.VideoWriter_fourcc('m','p','4','v') video = cv2.VideoWriter('timelaps.mp4', fourcc, frame_rate, (width, height)) print("動画変換中...") for i in range(len(images)): img = cv2.imread(images[i]) img = cv2.resize(img,(width,height)) video.write(img) video.release() print("動画変換完了") if __name__ == '__main__': start = time.time() images = sorted(glob.glob('images/*.jpg')) print("画像の総枚数{0}".format(len(images))) timelaps(images) elapsed_time = time.time() - start print ("処理にかかった時間は:{0}".format(elapsed_time) + "[sec]")
動画サイズは、パラメータを触ってもらうといくらでも変更可能です。
今回のプログラムは、天体撮影を行った際に撮れた連続写真を動画に変換するために作成したコードになりますので、FHDや4Kのサイズ設定を最初に用意しています。使用用途はそれくらいしかないのかなと少し思います・・・
使用環境によっては、sorted関数が作用せずに順番通りに読み込まれない場合があります。その際は、natsortedを使用するば順番通りに読み込まれると思います。
天体撮影かつプログラミングしている方は遊んでみてください(^^)