OpenCVで動画を作成する
OpenCVで動画を作成できる。 動画を左右反転させて、新たな動画を作成してみた。
コード
# coding: utf-8 import sys import cv2 class VideoMaker: def __init__(self): pass def main(self): # Set video names. input_video = sys.argv[1] output_video = input_video.replace('.MOV', '_flip.avi') # Get input video information. cap = cv2.VideoCapture(input_video) fps = int(cap.get(cv2.CAP_PROP_FPS)) width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # Set output video infomation. fourcc = cv2.VideoWriter_fourcc(*'XVID') vw = cv2.VideoWriter(output_video, fourcc, fps, (width, height)) # Set the above information. # Make the output video. print('Making a video...') while(True): ret, img = cap.read() if ret == True: img_flip = cv2.flip(img, 1) # Flip horizontal vw.write(img_flip) # Add frame else: break # Post processing. cap.release() cv2.destroyAllWindows() if __name__ == "__main__": VideoMaker().main()
解説
処理の大まかな流れは以下の通り。
- 入力動画の情報をゲット
- 出力動画の情報をセット
- 出力動画の作成・保存
FPSや画素数などを入出力で一致させている。
参考文献によると、コーデックはXVID
がおすすめとのこと。
MJPG
やX264
も指定できるが、サイズが大きすぎたり小さすぎたりするらしい。
試してないけど。
vw.write(img_flip)
で処理した画像を追加すれば、動画の作成と保存を同時に行ってくれる。
特に保存の必要はない。
使い方
video_maker.py
にコードを記載している。
コードと同じ場所に保存している動画(MOVファイル)を引数に指定すると、左右反転させた動画が作成される。
> python video_maker.py 2018_spring.MOV Making a video... >