🐍

Python: OpenCVで動画を重ねて再生する

2021/12/18に公開

下準備

pixabayを利用して重ねて再生するための動画を取ってきます。
今回は2つの動画を取ってきました。
Elster - 35908.mp4
Elster - 35908.mp4

Maple Leaf - 36419.mp4
Maple Leaf - 36419.mp4

ソースコード

import cv2
import sys


# 動画のパスを指定
video1_path = "Elster - 35908.mp4"
video2_path = "Maple Leaf - 36419.mp4"

# ファイルを読み込み
cap1 = cv2.VideoCapture(video1_path)
cap2 = cv2.VideoCapture(video2_path)

# 動画ファイルが開けたかを確認
if not cap1.isOpened():
  print("1つ目の動画ファイルの読み込みに失敗しました。")
  sys.exit()

if not cap2.isOpened():
  print("2つ目の動画ファイルの読み込みに失敗しました。")
  sys.exit()

# 出力する動画のサイズを指定
width = 800
height = 600

# 動画を再生する
while True:
  # 1つ目の動画から1フレーム取得する
  ret1, frame1 = cap1.read()
  if not ret1:
    break

  # 2つ目の動画から1フレーム取得する
  ret2, frame2 = cap2.read()
  if not ret2:
    break

  # フレームのサイズを合わせる
  frame1 = cv2.resize(frame1, (800, 600))
  frame2 = cv2.resize(frame2, (800, 600))

  # 画像を重ね合わせる
  frame3 = cv2.addWeighted(
    src1=frame1, alpha=0.5,
    src2=frame2, beta=0.5,
    gamma=0
  )

  # 画像を表示する
  cv2.imshow("Frame", frame3)

  key = cv2.waitKey(30)
  if key == 27:
    break

# 終了時処理
cap1.release()
cap2.release()
cv2.destroyAllWindows()

実行結果

重ねて再生されます

GitHubで編集を提案

Discussion