pythonを用いて倍速の動画を作成する方法(備忘録)

※この記事はkyoの備忘録として作成したものです。pythonのスクリプトを調べながら編集し、ひとまず目的のものが完成した状態で放置しているので、細かな部分が間違っている可能性があります。そのため、閲覧の際はその点をご了承頂いた上でお読みください。

Ca2+imagingで取得した動画を倍速にして進捗報告等で用いるためのメモ

WATLAB -Python, 信号処理, 画像処...
Python/OpenCVで動画速度(FPS)を変えて再保存! PythonでOpenCVを使うとプログラマの思い通りに、しかも簡単に動画を編集することができます。ここでは動画の再生速度を元よりもスローにしたり、高速にしたりといった調整...
コードは上のサイトのものをほぼパクってるはず

以下、コード

  1. import numpy as np #numpy起動する必要あるか分からんけど、とりあえず起動
  2. import cv2
  3. # 動画を読み込み、FPSを変更して別名で保存する関数
  4. def m_speed_change(path_in, path_out, scale_factor, color_flag):
  5.     # 動画読み込みの設定
  6.     movie = cv2.VideoCapture(path_in)
  7.     # 動画ファイル保存用の設定
  8.     fps = int(movie.get(cv2.CAP_PROP_FPS)) # 元動画のFPSを取得
  9.     fps_new = int(fps * scale_factor) # 動画保存時のFPSはスケールファクターをかける
  10.     w = int(movie.get(cv2.CAP_PROP_FRAME_WIDTH)) # 動画の横幅を取得
  11.     h = int(movie.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 動画の縦幅を取得
  12.     fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v') # 動画保存時のfourcc設定(mp4用)
  13.     video = cv2.VideoWriter(path_out, fourcc, fps_new, (w, h), color_flag) # 動画の仕様(ファイル名、fourcc, FPS, サイズ)
  14.     # ファイルからフレームを1枚ずつ取得して動画処理後に保存する
  15.     while True:
  16.         ret, frame = movie.read() # フレームを取得
  17.         video.write(frame) # 動画を保存する
  18.         # フレームが取得できない場合はループを抜ける
  19.         if not ret:
  20.             break
  21.     # 撮影用オブジェクトとウィンドウの解放
  22.     movie.release()
  23.     return
  24. path_in = r'C:\保存する場所を指定(ダウンロード、とか)\〇〇.avi' # 元動画のパスと倍速にしたいファイルの名前
  25. path_out = '△△.mp4' # 倍速になった動画の名前
  26. scale_factor = 3 # FPSにかけるスケールファクター。ここに入力する数字で何倍速かが決まる。3にすりゃ3倍速
  27. color_flag = True # カラー動画はTrue, グレースケール動画はFalse
  28. # 動画の再生速度を変更する関数を実行
  29. m_speed_change(path_in, path_out, scale_factor, color_flag)

上記をjupyterなどで実行すれば、おk。

動画の保存先は、例えばjupyterで上のスクリプトを実行すればこのスクリプトが保存されているフォルダに作成される。

フレーム数とか調整しないで作成したから、少し動きがカクッとするけどそんなに気にならなかったので無視。

miniscopeから得られた生の動画のままだとコーデックの問題で、うまく行かないときもある。その辺は適宜編集系のソフトtかも使って対処する。pythonにこだわることだけが、必ずしも楽ではない。

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!

この記事を書いた人

コメント

コメントする

目次
閉じる