OpenPose による姿勢推定(Windows 上)
OpenPose は、人体、顔、手、足の「キーポイント」を検出するソフトウェア。 多数のカメラを配置して、3次元のキーポイントを得る機能もある
OpenPose の利用条件などは、利用者が確認すること。次のWeb ページを活用してください
https://flintbox.com/public/project/47343/
【サイト内の関連ページ】
謝辞:このWebページで紹介する OpenPose ソフトウェアの作者に感謝します
前準備
OpenPose のインストール
Windows での OpenPose のインストール手順は,別ページで説明
OpenPose を使ってみる
Windows のコマンドプロンプトを使う
ビデオカメラ
USB接続できるビデオカメラを準備し,パソコンに接続しておく.
GPU 版を使う場合:
cd C:\openpose-1.7.0-binaries-win64-gpu-python3.7-flir-3d_recommended cd openpose bin\OpenPoseDemo.exe
付属の動画ファイルを使用
GPU 版を使う場合:
cd C:\openpose-1.7.0-binaries-win64-gpu-python3.7-flir-3d_recommended cd openpose bin\OpenPoseDemo.exe --video examples\media\video.avi
付属の画像ファイル
GPU 版を使う場合:
cd C:\openpose-1.7.0-binaries-win64-gpu-python3.7-flir-3d_recommended cd openpose bin\OpenPoseDemo.exe --image_dir examples\media
オプションの確認
GPU 版を使う場合:
cd C:\openpose-1.7.0-binaries-win64-gpu-python3.7-flir-3d_recommended cd openpose bin\OpenPoseDemo.exe --help
--face, --hand オプションを試してみる
顔と手の情報も得られる
【関連する外部ページ】: https://github.com/jrkwon/openpose/blob/master/doc/quick_start.md
GPU 版を使う場合:
cd C:\openpose-1.7.0-binaries-win64-gpu-python3.7-flir-3d_recommended cd openpose bin\OpenPoseDemo.exe --image_dir examples\media -face --hand
--write_json オプションを試してみる
* 末尾の「.」(半角ピリオド』はディレクトリの指定
GPU 版を使う場合:
cd C:\openpose-1.7.0-binaries-win64-gpu-python3.7-flir-3d_recommended cd openpose bin\OpenPoseDemo.exe --image_dir examples\media --write_json .
.json ファイルができていることがわかる
dir /w
Python から扱ってみる(書きかけ)
次のプログラムを動かす.
import sys import cv2 import os from sys import platform # Remember to add your installation path here # Option sys.path.append('C:/openpose-1.7.0-binaries-win64-gpu-python3.7-flir-3d_recommended/openpose/bin/python'); import openpose params = dict() params["logging_level"] = 3 params["output_resolution"] = "-1x-1" params["net_resolution"] = "-1x368" params["model_pose"] = "BODY_25" params["alpha_pose"] = 0.6 params["scale_gap"] = 0.25 params["scale_number"] = 1 params["render_threshold"] = 0.05 # If GPU version is built, and multiple GPUs are available, set the ID here params["num_gpu_start"] = 0 params["disable_blending"] = False # Ensure you point to the correct path where models are located params["default_model_folder"] = "C:/openpose/models/" # Construct OpenPose object allocates GPU memory op = OpenPose(params) while 1: # Read new image img = cv2.imread("C:/openpose/examples/media/COCO_val2014_000000000192.jpg") # Output keypoints and the image with the human skeleton blended on it keypoints, output_image = op.forward(img, True) # Print the human pose keypoints, i.e., a [#people x #keypoints x 3]-dimensional numpy object with the keypoints of all the people on that image print(keypoints) # Display the image cv2.imshow("output", output_image) cv2.waitKey(15)