はじめに
こんにちは。地方公立大に通う文系学生の犬です。
この記事では、cmdからpythonを実行するのに、毎回新しく書き直す作業を省く方法__を(備忘録的に)紹介しています。
ちなみに今回扱うのは.bat__こと__バッチファイル__です。
どんな時に有効か
僕の場合は、__Chainer Realtime Multi-Person Pose Estimator(以下"CRMPE")__というモジュールのうち、__pose_detector.py__を中心とした「人が映った画像に対して姿勢推定をし、点と線を描画して保存する」という内容を反復したいと考えていました。
※1_cmd上でのfor文の記述は漸次追加します。
※2_参考にさせていただいたCRMPEの記事はこちら→https://github.com/DeNA/chainer_Realtime_Multi-Person_Pose_Estimation
大学の研究(先生が寛容なので分野が研究室のものから逸脱気味でも背中を押してくださいます)のために__大量の画像データに対し同様の処理を複数回行う__必要が出てきた、というのがこの記事、と言いますかコーディングの発端となります。
僕のケースのように、エクスプローラー(フォルダなど)の画面から__特定のファイルをクリックしただけで単純動作を反復できるようにしたい!__という方にバッチファイルは効くはずです。
具体的にはどうしたか
rem this is to apply pose_detector.py to images
call C:\Users\name\anaconda3\Scripts\activate.bat
C:\Users\name\anaconda3\python.exe C:\Users\name\CRMPE\pose_detector.py posenet models/coco_posenet.npz --img data/sth.png
pause
exit
※見づらくてすみません...
①一番上の__rem__はpythonの__#__同様、__コメント__的な役割をしています。
②私はpython3がanaconda環境のもと動いてる(確かそう)ので、anaconda3のScriptsにあるバッチファイル「activate.bat」を先に動かしておく必要がありました。anacondaとか特に関係なくただpythonがCドライブ直下に置いてあるだけ、というような方は次の行から初めて頂いても差し支えないかと思われます。
③__python.exe__を記述し、その後に__半角スペース__(意外と忘れがち)、続いて今回動かしたい__pose_detector.pyとその命令の詳細__を書いていきます。
気に留めておくべきなのは、この__バッチファイルの内容はほとんどきれいそのままcmdに書き写される__ということで、この辺りの詳細な部分は予めcmdに書こうと思っていたことをそのまま書いてしまって差し支えありません。
※したがって、今回はCRMPEの出典元様の記事にあったcmdへの命令をそのまま書いています。
④__pause__と書いておくことで、cmdが結果を出した途端に消えてしまうのを防ぎます(何かしらキー入力するまでcmdを開きっぱなしにできます)。
私の場合は、画像の出力ついでに画像内の点の座標データ(行列)をprintするにあたり、__加筆したpythonのコードが機能しているか__を確かめたいと思い、pauseを書くことで観察の時間を得ました。
⑤最後に__exit__でcmdを閉じます。
最後に
細かいデバッグを必要とするプログラムでは、(これはかなり単純かつ簡単なものですが)バッチファイルはある程度の役割を果たしてくれると思います。あと、もっとうまく使えるようになりたいと思いました...(for文とかも書けるそうなので)
(抱負)
研究と就活と院試準備全部頑張ろ。