【動画連結】OpenCVで動画の連結をやってみた♪


OpenCVで動画連結してみた。
なかなか芽が出ないので、コマ切れになった動画を連結することとした。

やってみると、参考サイトがあり、ここから連結は簡単にできてしかも応用範囲も広そうなので、まとめておこうと思う。

コードは以下に置きました

OpenCV/combine_movie.py

これは、ほとんど参考のexport_movie.pyのままで、単に複数動画に拡張したものです。
【参考】
Python + OpenCV で雑コラ動画を作成する③ 雑コラ動画作成

コード解説

OpenCVだけで、やれます。
関数名をcombine_movie()としました。
複数ファイルは列挙しています。

#coding=utf-8
import cv2

def combine_movie():
    # 入力する動画と出力パスを指定。
    target1 = "kenbikyo_video_hatuga_60-3.mp4"
    target2 = "kenbikyo_video4450940952464.mp4"
    target3 = "kenbikyo_video4527173059250.mp4"

参考の通り、出力ファイルを定義します。
codecはウワンと同じMP4V,出力の拡張子は参考と同じとしました。
fps, int(width), int(height)を最初の元動画から取得します。
ここで、fpsをfps*2とか、int(fps*0.5)とすると、早回し、スロー再生ができます。

    result = "kenbikyo_combine.m4v" 
    # 形式はMP4Vを指定
    fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')  

    #動画情報の取得
    movie = cv2.VideoCapture(target1)    
    fps    = movie.get(cv2.CAP_PROP_FPS)
    height = movie.get(cv2.CAP_PROP_FRAME_HEIGHT)
    width  = movie.get(cv2.CAP_PROP_FRAME_WIDTH)
    print(fps, int(width), int(height))

    # 出力先のファイルを開く
    out = cv2.VideoWriter(result, int(fourcc), fps, (int(width), int(height)))

ここでは3個の動画を順に読み込み・書き出しをします。
結合動画を意味する'comBined_movie'を重畳します。

    # 動画の読み込み
    for i in range(1,4):
        if i==1:
            movie = cv2.VideoCapture(target1)
            print(i)
        elif i==2:
            movie = cv2.VideoCapture(target2)
            print(i)
        elif i==3:
            movie = cv2.VideoCapture(target3)
            print(i)    

        # 最初の1フレームを読み込む
        if movie.isOpened() == True:
            ret,frame = movie.read()
        else:
            ret = False

        # フレームの読み込みに成功している間フレームを書き出し続ける
        while ret:
            cv2.putText(frame, 'comBined_movie', (400,400), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0,0,255), 2);

            # 読み込んだフレームを書き込み
            out.write(frame)

            # 次のフレームを読み込み
            ret,frame = movie.read()


if __name__ == '__main__':
    combine_movie()

思っていたより、案外簡単にできました。

連結動画

複数の顕微鏡動画を連結してスロー再生、早回し再生などしてみた♪

※画像をクリックするとYouTube動画につながります

まとめ

・OpenCVで動画の連結をやってみた
・fpsの値で再生速度を変更できる
※再生速度変更だけでもできます

・いろいろなバラバラ動画から、まともな動画が作れそうだ