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)