OpenPose には動画を解析するプログラム OpenPoseVideo.py
が含まれています.これを Anaconda Prompt で実行すると解析結果が avi 形式の動画として出力されます.
ここではそのプログラムを Jupyte Notebook から実行してみます.まず,Anaconda Prompt で OpenPose のフォルダに移動して Jupyter Notebook を起動します.
(py39openpose) C:\Users\lecture>cd Documents ⏎ (py39openpose) C:\Users\lecture\Documents>cd python ⏎ (py39openpose) C:\Users\lecture\Documents\python>cd OpenPose ⏎ (py39openpose) C:\Users\lecture>jupyter notebook ⏎
解析したいファイルは golf フォルダ内にある golf.mp4 です.Jupyter Notebok に次のように入力すると解析されて結果が output.avi ファイルとして出力されます.
!python OpenPoseVideo.py --video_file golf\golf.mp4
なお,先頭に !
を付加することでシェルコマンドとして Python プログラムを実行できます.引数 --video_file
のあとに golf\golf.mp4
のように解析したい画像ファイルへの相対パスを指定します.ただし,macOS や Linux の場合はフォルダの区切り文字を /
に変更して golf/golf.mp4
と指定してください.
さらに,解析が終了したら,表示されている動画のウィンドウをクリックして選択した後に何らかのキーを入力するとプログラムを終了できます.この操作は直感的ではありませんが,OpenPoseVideo.py
のソースを読むと理解できることでしょう.
解析にはそこそこの時間が必要になります.例えば,4K映像1フレームあたり,Intel Core i7-8565U CPU で 2 秒程度,Apple M1 Max で 0.8 秒程度を要しました.CUDA 等の GPU 環境の設定ができれば GPU を利用して解析することでより高速に処理ができるはずです.
また,OpenPoseVideo.py
に若干手を加えると骨格だけの映像を生成することもできます.下のアニメーション GIF は2種類の解析結果と元の動画を動画編集ソフトウェア (Adobe Premiere Pro) を使って並べて生成したものです.
下の動画は元の動画(iPhone SE2 4K 60fps 映像)と解析結果の動画を繋げたものです.映像の手ブレ補正を Adobe Premiere Pro のワープスタビライザーで行った後に,骨格検出を実行しています.