Pythonでいろいろやってみる

Pythonを使った画像処理や機械学習などの簡単なプログラムを載せています。

動画をキャプチャーしてタイムラプス動画を作成する

 動画をキャプチャーしてタイムラプス動画を作成します。ライブラリPyAutoGUIを使うとパソコン画面のスクリーンショットを取得できます。動画を再生しているパソコンのスクリーンショット画像を一定間隔で取得し、OpenCVで動画ファイルに書き込むことでタイムラプス動画を作成します。

関連記事

パソコンの画面を録画する

環境
  • windows10 home
  • Anaconda 3/ jupyter notebook 6.4.6
  • Python 3.10.4
  • pyautogui 0.9.53
  • numpy 1.21.5
  • OpenCV 4.5.5
コード

 コードを実行すると、まず12秒間スリープします。その間に取り込みたい動画を全画面表示します。その後0.5秒おきに全画面(ここでは1920x1080ピクセル)をキャプチャーしリストに格納します。360画面をキャプチャーした後、リストから1画像ずつ取り出しmp4形式で1920x1080、30fpsの動画を作成します。  なお、作成したタイムラプス動画の用途によりますが元動画の著作権には注意が必要です。このプログラムの動作確認にはYoutube
Unbelievable Most Beautiful Waterfalls | Drone | Free stock footage | Free HD Videos - no copyright
を用いています。こちらは「動画そのものを売る以外は自由に使用してかまわない」と説明されており著作権の点で問題がありません。

import time
import pyautogui
import cv2
import numpy as np

# 12秒スリープ
time.sleep(12)

# 動画のフレームレート
fps=30 

# キャプチャー領域
cap_region = (0,0, 1920, 1080)

# キャプチャー画像を格納するリスト
frames = []

# 0.5秒おきに画面をキャプチャーしリストに保存
for i in range(360):
    
    # 画面をキャプチャー
    cap = pyautogui.screenshot(region = cap_region)
    
    # pillow形式からOpenCV形式に変換
    img = cv2.cvtColor(np.array(cap), cv2.COLOR_RGB2BGR)
    
    # リストにキャプチャー画像を追加
    frames.append(img)

    # 0.5秒スリープ
    time.sleep(0.5)
        
# 保存用動画ファイルのフォーマット設定
fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v') 
out = cv2.VideoWriter('timelapse.mp4', fourcc, fps, (1920, 1080))         

# キャプチャー画像を読み出して出力動画ファイルに追記
for img in frames:        
    out.write(img) 

# 出力動画ファイルをクローズ    
out.release()      
実行結果

動画からタイムラプス動画が作成されます。

以下のサイトを参考にさせていただきました

機械系エンジニアの備忘録 > 【python】デスクトップ画面をキャプチャ(録画)する簡易ソフトを作る

ブログランキングに参加しています

にほんブログ村 IT技術ブログへ
にほんブログ村