#author("2023-06-04T15:42:14+00:00","default:ubi","ubi") #author("2023-06-06T11:55:35+00:00","default:ubi","ubi") [[青木>Insider/青木]] *やることリスト [#zde0cd68] -トラックマンデータの時間情報(リリースタイミングの時間)を利用して1試合分の映像とタイミングを同期 -投手のモーション・ボールの検出・打者のモーションをとる必要がある -OpenPoseの時に余計な人物(ボールも検出するなら余計なモノも)を検出しないようにffmpegで切り取り? - **OpenPoseの使い方 [#zde0cd68] -cmdを開く cd C:\openpose-1.7.0-binaries-win64-gpu-python3.7-flir-3d_recommended cd openpose bin\OpenPoseDemo.exe --video C:\~\~\~.mp4(処理をかける動画) --write_json C:\~\~\(json書き出し用に別で作ったファイル) --display 0 --write_video C:\~\~\~.avi(関節位置が重畳した動画.avi) ffmpeg -y -loglevel info -i openpose.avi output.mp4(aviからmp4に変換。ffmpegのインストールが必要) ---- 例~ ###OpenPoseの環境に移動~ cd C:\openpose-1.7.0-binaries-win64-gpu-python3.7-flir-3d_recommended\openpose ###OpenPoseをかけたい動画を入力、姿勢推定した詳細のjsonの出力先、結果の動画(.avi)の出力先~ C:\openpose-1.7.0-binaries-win64-gpu-python3.7-flir-3d_recommended\openpose>~ bin\OpenPoseDemo.exe --video C:\Users\ubi05\Desktop\html_lesson\nakami1.mp4 --write_json C:\Users\ubi05\Desktop\html_lesson\ --display 0 --write_video C:\Users\ubi05\Desktop\html_lesson\nkm1_open.avi ###ffmpegを利用したaviをmp4にする処理(ログラベル付き)~ C:\openpose-1.7.0-binaries-win64-gpu-python3.7-flir-3d_recommended\openpose>~ ffmpeg -y -loglevel info -i C:\Users\ubi05\Desktop\html_lesson\nkm1_open.avi C:\Users\ubi05\Desktop\html_lesson\nkm1_open1.mp4 -検出する人数を制限する bin\OpenPoseDemo.exe --video C:\~\~\~.mp4(処理をかける動画) --write_json C:\~\~\(json書き出し用に別で作ったファイル) --display 0 --write_video C:\~\~\~.avi(関節位置が重畳した動画.avi) --number_people_max @(検出したい人数) --オプションnumber_people_maxで人数を絞れるので今回の打者と投手だけでいい場合には2とすることでなるべく二人だけを検出してくれる **ffmpegの使い方 [#zde0cd68] -ffmpegの導入の仕方 --いつもの[[金子邦彦教授のffmpegサイト:https://www.kkaneko.jp/tools/win/ffmpeg.html]]に沿って導入 ---- -10分(600秒)分割で長い動画を区切る方法 --%%色々分割する方法はあったが、エラーがでて進めなかった。[[ニコニコ向けの動画のために分割する方法:https://qiita.com/indexs/items/020d4a904966e3e124bc]]に乗ってた方法だとうまくいった。(各要素の詳細は書いてないので注意)%% --%%下は例%% C:\Users\ubi05\Desktop\0523game> ffmpeg -i C0001.MP4 -c copy -f segment -flags +global_header -segment_format_options movflags=+faststart -reset_timestamps 1 -segment_time 600 output%02d.mp4 ---- -上の方法では音声データが壊れてしまって、クリッピングに繋げられなかったのでクリッピングと同様のmoviepyを利用して10分(600秒)分割で長い動画を区切る方法 --参考したサイト→[[moviepyで動画編集:https://gadgelaun.com/?p=25112]] ~・初めに pip install moviepy をしてから from moviepy.editor import VideoFileClip # 編集したい動画のパスを指定し、カットする開始秒数と終了秒数を指定。 video = VideoFileClip("\\Downloads\\unrefined\\C0004.mp4").subclip(50, 70) # 編集した動画を保存するパスを指定 video.write_videofile("\\Downloads\\unrefined\\edited.mp4",fps=60) *撮影込みの流れ [#zde0cd68] -0.試合前にピッチャーとバッターの座標を設定しておく(バッターは右左どちらも映るようにする) -1.1試合の全景を120fpsで撮りっぱなしにする -2.トラックマンデータの時間情報と同期させる ~(同期させる方法としては録画の開始をトラックマンの取得開始と同時に押す -3.時間情報から''前後何フレーム必要か''を1球分で試してみて投球~ミートのフレームを決める(球種によっては変わるので余裕を持たせる) -4.最初に設定した座標からffmpegで不要な部分をクリッピング &投手打者の周辺のみクリッピング &並べる -5.OpenPoseで「投手の足上げ・着足・リリース、打者の足上げ・着足・ミート」のタイミングのフレームを抽出する -6.(!まだ構想ない!) ~タイミングのズレを可視化(必要な部分を矢印の位置と変色で表すみたいなの)する ~&何打席目・何球目・球種の取得、および提示 -7.完成した動画を出力&できればピッチベースに自動アップロード ~(第1段階は5,6のステップは省く)