GPU対応OpenPoseの環境構築（2025年6月時点）

## 用意するもの
- Visual Studuio Community 2022
- [OpenPoseのソース (v1.7)](https://github.com/CMU-Perceptual-Computing-Lab/openpose/archive/refs/tags/v1.7.0.zip)
- [OpenPoseのWinodws用ビルド（v1.7)](https://github.com/CMU-Perceptual-Computing-Lab/openpose/releases/download/v1.7.0/openpose-1.7.0-binaries-win64-gpu-python3.7-flir-3d_recommended.zip)
- [OpenPoseのモデルファイル（KaggleよりDLしたほうが早い）](https://www.kaggle.com/datasets/changethetuneman/openpose-model?resource=download)
- CUDA（執筆時では11.8をインストール済み、要否不明）



## 本資料の目標
Winodws用ビルド済みバイナリ側のディレクトリに開発に必要な様々を補完し、OpenPoseDemo.exeのソースopnepose.cppをビルドする。openpose.cppを参考に独自のアプリケーションの開発をすすめる


## 準備
### 準備1 3rdparty>windows以下を補充
ビルド済みバイナリにはunzipとwgetしかないが、開発にはcaffe、caffe3rdparty、opencvが必要。makeすると自動的にダウンロードしてくれるものだが、.krドメインからのダウンロードなので、環境によっては何かしら突破しないと円滑にダウンロードできない。そのため、以下のURLからzipファイルをそれぞれブラウザやダウンローダで落としたほうが早い。これらのURLはソースコード中のgetCaffe.bat, getCaffer3rdparty.bat, getOpenCV.batに書いてある。（これ実行すればよいんだが、CMUのサーバーが最近応答がない）
http://vcl.snu.ac.kr/OpenPose/3rdparty/windows/caffe_16_2020_11_14.zip
http://vcl.snu.ac.kr/OpenPose/3rdparty/windows/caffe3rdparty_16_2020_11_14.zip
http://vcl.snu.ac.kr/OpenPose/3rdparty/windows/opencv_450_v15_2020_11_18.zip
ダウロード完了後、3rdparty->windows以下に展開
![{7CEF06C5-9663-43CE-AA8D-90363D78CC75}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641672/1cd30cf9-0b4d-4866-859f-6c3daa934446.png)

### 準備2 modelsの補完
ビルド済みバイナリのzipファイルには学習済みModelのファイルがない。ダウンロードが必要だが、これもまたCMUのサーバーが重い。なので、Kaggleにおいてあるミラーを使用する。
https://www.kaggle.com/datasets/changethetuneman/openpose-model?resource=download

ダウンロード後、
getBaseModels.bat
getCOCO_and_MPII_optional.bat
に従って、以下のようにコピー

pose_iter_102000.caffemodel -> hand
pose_iter_116000.caffemodel -> face
pose_iter_160000.caffemodel -> pose/mpi
pose_iter_440000.caffemodel -> pose/coco
pose_iter_584000.caffemodel -> pose/body_25


### 準備3　ブランクのVisualC++プロジェクトの作成
Windowsデスクトップウィザードを使って、からのC++アプリを作成。

### 準備4　Visual Studioの各種設定
※ [OpoenPoseBinaryRoot]はビルド済みのOpenPoseバイナリが格納されているディレクトリパスを差し、執筆にあたって作った環境では、下となる。
    ```
    C:\Tools\openpose-1.7.0-binaries-win64-gpu-python3.7-flir-3d_recommended\openpose
    ```


* OpenPoseのソース > example > openpose > openpose.cppを自身のプロジェクトに取り込み
* 追加のインクルードディレクトリとして以下を指定
    ```
    [OpenPoseBinaryRoot]\\include
    [OpenPoseBinaryRoot]\\3rdparty\\windows\\caffe\\include
    [OpenPoseBinaryRoot]\\3rdparty\\windows\\caffe3rdparty\\include
    [OpenPoseBinaryRoot]\\3rdparty\\windows\\opencv\\include
    ```

 
* 追加のライブラリディレクトリとして以下を設定
    ```
    [OpenPoseBinaryRoot]\\lib
    [OpenPoseBinaryRoot]\\3rdparty\\windows\\caffe\\lib
    [OpenPoseBinaryRoot]\\3rdparty\\windows\\caffe3rdparty\\lib
    [OpenPoseBinaryRoot]\\3rdparty\\windows\\opencv\\x64\\vc15\\lib
    ```
* 追加の依存ファイルとして以下を設定(Release用)
    ```
    openpose.lib
    opencv_world450.lib
    caffe.lib
    caffeproto.lib
    glog.lib
    gflags.lib
    boost_filesystem-vc142-mt-x64-1_74.lib
    boost_system-vc142-mt-x64-1_74.lib
    ```
* 追加の依存ファイルとして以下を設定（Debug用）
    ```
    openposed.lib
    opencv_world450d.lib
    caffe-d.lib
    caffeproto-d.lib
    glogd.lib
    gflagsd.lib
    boost_filesystem-vc142-mt-gd-x64-1_74.lib
    boost_system-vc142-mt-gd-x64-1_74.lib
    ```
* OSのPATHに以下を設定（DLL用）
    ```[OpenPoseBinaryRoot]\\bin```
* 前にダウンロードしたmodelsディレクトリ以下をVisual Studioの先に作成したプロジェクトのソースコードのあるディレクトリにコピー
![{1DAAF7C9-C6B1-4CC3-8995-40C40070F752}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641672/051295df-406a-42a2-b7ac-ba43abfa5eab.png)

## ビルド＆実行
カメラ等を接続した状態で、Release/Debugモードでビルド＆実行すればOK。

Have a good Openpose Time!!