[toc]
# 版本
| 軟體 | 版本 |
|----------------|--------------|
| Windows | 11 |
| CUDA | 11.8 |
| cuDNN | 8.9.7 |
| CMake | 3.13.3 |
| Visual Studio | 2019 (16.11.9) |
# 下載連結
[Python 3.9.13](https://www.python.org/downloads/release/python-3913/)
[CUDA](https://developer.nvidia.com/cuda-11-8-0-download-archive?target_os=Windows&target_arch=x86_64&target_version=11&target_type=exe_local)
[cuDNN](https://developer.nvidia.com/rdp/cudnn-archive)

[Cmake](https://cmake.org/download/)
[Visual Studio](https://learn.microsoft.com/en-us/visualstudio/releases/2019/history)

[model, opencv, caffe依賴檔案](https://onedrive.live.com/?authkey=%21AFUSeVJ9cb3LkAw&id=02012623B79DCC7A%21574099&cid=02012623B79DCC7A&parId=root&parQt=sharedby&o=OneUp)

[pybind](https://github.com/pybind/pybind11/tree/085a29436a8c472caaaf7157aa644b571079bcaa)
[caffe](https://github.com/CMU-Perceptual-Computing-Lab/caffe/tree/b5ede488952e40861e84e51a9f9fd8fe2395cc8a)
# 建置步驟
### 第一步 clone OpenPose 原始碼
首先去 GitHub 下載 OpenPose 原始碼
```bash=
git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose.git
cd openpose
```
### 第二步 安裝 CUDA 和 cuDNN
1. 安裝 CUDA(路徑預設為 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA)。
2. 解壓縮 cuDNN,將以下三個資料夾放置於 CUDA 路徑:
- bin
- include
- lib


確認 NVIDIA GPU 驅動程式、CUDA 和 cuDNN 已正確安裝。
檢查 CUDA 是否已安裝:
```bash=
nvcc --version
```
### 第三步 下載依賴套件
先去下載model, opencv, caffe依賴檔案,如下載連結那。下載下來後直接把兩個資料夾丟到openpose資料夾中,遇到衝突直接跳過。僅放入沒有的檔案

然後去github上下載pybind, caffe,連結在下載連結,下載後解壓縮至 3rdparty中,原本舊的可以刪掉

### 第四步 使用 CMake 編譯
在 OpenPose 根目錄執行以下指令:
```bash=
mkdir build // 建立預編譯的資料夾 這裡會放置編譯後的檔案
cd build // 移動至該資料夾
```
使用 CMake 配置專案:
```bash=
cmake -G "Visual Studio 16 2019" -T host=x64 -DBUILD_PYTHON=OFF ..
```
> 如果使用 Visual Studio 2022,請將 Visual Studio 16 2019 替換為 Visual Studio 17 2022。
### 第五步 編譯專案
1. 開啟生成的 .sln 檔案(位於 build 資料夾中),這會啟動 Visual Studio。

2. 在 Visual Studio 中,將編譯模式設為 Release。

3. 修改 Visual Studio 的字符集設定,將其設置為 Use Unicode Character Set
* 在 Visual Studio 中打開你的 OpenPose 解決方案(.sln 文件)。
* 在 解決方案資源管理器(Solution Explorer) 中,右鍵點擊你的項目(如 OpenPoseDemo),選擇 屬性(Properties)。
* 找到進階選項並找到字符集(Character Set) 選項。
* 點擊下拉菜單,選擇 使用 Unicode 字符集(Use Unicode Character Set)。

4. 按下 Ctrl + Shift + B 開始編譯。
5. 最後在 build/x64/Release 中會有OpenPoseDemo.exe跟一大堆東西代表編譯成功了

6. 如果直接執行 OpenPoseDemo.exe 後他會跑一堆找不到DLL錯誤,這時要去build/bin底下把所有DLL檔都複製到build/x64/Release 中

# 開始進行推論
首先會去網路上隨機找一張有人的圖存在資料夾中(路徑要記得),然後去 openpose/build/x64/Release 中打開 cmd 並輸入以下指令
```bash=
OpenPoseDemo.exe --image_dir C:\Users\Lin\MyImages\ --model_folder C:\Users\Lin\Downloads\openpose\models\ --write_images C:\Users\Lin\MyResults\
```
* --image_dir:
指定包含圖片的目錄。
* --model_folder:
指定模型文件夾的路徑(包含 BODY_25、Face 和 Hand 模型)。
* --write_images:將結果保存為圖片。
默認情況下,OpenPose 在執行完畢後會彈出一個窗口顯示推論結果。如果指定了 --write_images,結果會保存到指定目錄中。