PythonとOpenCVで2つの動画に「どれだけ差があるか」を数値化
第一話
第二話
フレームの差分を出した後に、その平均明るさ(明度)がどのくらいあるかで比較する。
動画の差分比較
code:mov_diff.py
import cv2
import numpy as np
# 動画の読み込み
video1 = cv2.VideoCapture('A.mp4')
video2 = cv2.VideoCapture('B.mp4')
while (True):
# 動画の1フレームを取得
ret1, frame1 = video1.read()
ret2, frame2 = video2.read()
# どちらかのフレームが取得できない場合はループを抜ける
if not ret1 or not ret2:
break
# フレームの差分で画像を作成
diff = cv2.absdiff(frame1, frame2)
# BGR(RGB)からHSVに変換
diff_hsv = cv2.cvtColor(diff, cv2.COLOR_BGR2HSV)
# HSVのV(明度)だけ抽出
# 平均値を計算して出力
diff_v_mean = np.mean(diff_v)
print(diff_v_mean)
# メモリ解放
video1.release()
video2.release()
OpenCV使うと面倒なロジックでもかんたんにかけて良い。
ただPython×OpenCV、ちと計算が遅いかも……?
もうちょい高速化できそう。