Skip to content
/ diffm Public

動画差分をリアルタイムで描画しグラフ化

Notifications You must be signed in to change notification settings

Tsut-ps/diffm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 

Repository files navigation

diffm

動画差分を表示 & グラフ化するプログラム。
リアルタイム計算。
30フレームごとに動画差分を描画、グラフを更新するようになっている(書き換えれば調整可能)。

左がリアルタイム差分表示。右が差分グラフ。 image

しきい値以上の比較画像を出力することも可能。 image

どうして作ったの?

  • 動画のバージョニングをしているため、プロジェクトの書き出し後に変更点が知りたかった
  • 稀にプロジェクトの一部が壊れるので、破壊されたシーンを検知したかった
  • AviUtlで差分比較するのが面倒だった
  • グラフ化して定量的に差分比較したかった
  • ライブラリの理解を深めたかった(あまり使ったことがないので)

もっと詳しく(経緯)

PythonとOpenCVで画像を比較して保存する

ToDo

演算がちょっと重めなので、軽量化したい。

確認動作環境

  • Windows 11
  • VSCode 1.83.1
  • Python 3.11.6 (Microsoft Store)

必要なライブラリ

  • OpenCV
    pip install opencv-python
    
  • NumPy
    pip install numpy
    
  • Matplotlib
    pip install matplotlib
    

実行

  1. どこか好きなところに diffm.py を保存
  2. 実行できるもので開く
  3. 引数を指定して実行
> python diffm.py "A.mp4" "B.mp4" 60 1
  • 第1引数 = 動画A
  • 第2引数 = 動画B
  • 第3引数 = 描画間隔(オプション)
  • 第4引数 = しきい値(オプション)

制約

  • 1 <= 描画間隔 (整数)
  • 0 <= しきい値 <= 255 (小数)
  • 第4引数を指定すると、しきい値以上の差分を "over" フォルダに書き出すようになります。
    over フォルダの中身は、実行ごとに初期化されません(誤削除を防ぐため)。
    以前のデータが残っていれば、予め空っぽにしてから実行してください。

終了

「diffm」ウィンドウをバツで閉じると、他のウィンドウも閉じる。

描画間隔について

1を指定すると、1フレームごとにグラフや動画を更新します。その分処理は重めです。
そのため、動画の1秒間あたりのフレーム数(24/30/60フレーム等)を推奨してます。こうすることで、動画の1秒分ごとに更新されます。 ※この設定はグラフのプロットには影響しません。

標準出力について(引数をフルに使っている場合)

比較動画A:  M:\Users\~\A.mp4
比較動画B:  M:\Users\~\B.mp4
描画間隔(フレーム): 30
閾値: 1.0

frame: < 30 | brightness: 0 
frame: < 60 | brightness: 1.3613686342592592 *
……

各行で、1~30フレームまで、31~60フレームまで …… の明るさ(差分)の最大値を出しています。 しきい値が0以上のときに「*」が付き、このフレーム間にある明るさ(差分)が最大のフレームを、over フォルダに出力します。

About

動画差分をリアルタイムで描画しグラフ化

Resources

Stars

Watchers

Forks

Languages