人体姿态库OpenPose本地编译安装

以下是在 Windows 11 系统下,使用 Conda 虚拟环境通过 Python 运行 OpenPose 的详细教程。我们将从环境配置到实际运行逐步操作:


​1. 确认系统环境​

  • ​操作系统​​:Windows 11

  • ​显卡​​:NVIDIA 独立显卡(已安装 CUDA 12.1 和对应驱动)

  • ​IDE​​:Visual Studio 2022(已安装“使用 C++ 的桌面开发”工作负载)

  • ​包管理​​:Conda 已安装


​2. 安装 Visual Studio 必要组件​

  1. 打开 ​​Visual Studio Installer​​。

  2. 确保勾选以下组件:

    • ​使用 C++ 的桌面开发​

    • ​Windows 10/11 SDK​

    • ​C++ CMake 工具​


​3. 创建 Conda 虚拟环境​

# 打开 Anaconda Prompt 或系统终端 
conda create -n openpose python=3.9 
# 推荐 Python 3.9(兼容性最佳) 
conda activate openpose

​4. 安装 OpenPose 的 Python 依赖​

# 安装基础依赖 
conda install -y numpy opencv matplotlib 
pip install pybind11 
# 安装 CMake(用于编译 C++ 部分) 
conda install -y cmake

​5. 下载 OpenPose 源码​

# 下载官方仓库(建议在非中文路径下操作) 
git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose.git 
cd openpose

​6. 编译 OpenPose(关键步骤)​

​(1) 配置 CMake​
  1. 在 openpose目录下创建 build文件夹:

    mkdir build cd build
  2. 运行 CMake(根据你的 CUDA 路径调整):

    cmake .. -G "Visual Studio 17 2022" -A x64 ^ -DCMAKE_INSTALL_PREFIX=../install ^ -DCUDA_TOOLKIT_ROOT_DIR="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.1" ^ -DPYTHON_EXECUTABLE="C:/Users/你的用户名/anaconda3/envs/openpose/python.exe" ^ -DBUILD_PYTHON=ON
    • 如果 CMake 报错,检查 CUDA 和 Python 路径是否正确。

    • 确保输出中显示 Python bindings: ON

​(2) 编译安装​
cmake --build . --config Release --target install
  • 此过程可能需要 ​​30分钟~2小时​​(取决于硬件)。

  • 如果编译失败,检查:

    • 是否以管理员身份运行终端。

    • Visual Studio 的 C++ 工具链是否完整。


​7. 设置 Python 接口​

​(1) 添加环境变量​

将编译生成的 pyopenpose模块路径加入 Python:

# 获取生成的 .pyd 文件路径(通常在 build/python/openpose/Release 下) 
set PYTHONPATH=%PYTHONPATH%;D:/path/to/openpose/build/python/openpose/Release
​(2) 验证安装​
# 在 Python 中测试 
import pyopenpose as op 
print(op.__file__) # 确认路径正确

​8. 运行示例代码​

import cv2
import pyopenpose as op

# 配置参数
params = {
    "model_folder": "D:/path/to/openpose/models/",  # 替换为你的模型路径
    "net_resolution": "368x368",
    "render_threshold": 0.5
}

# 初始化
op_wrapper = op.Wrapper()
op_wrapper.configure(params)
op_wrapper.start()

# 处理图像
image = cv2.imread("input.jpg")
datum = op.Datum()
datum.cvInputData = image
op_wrapper.emplaceAndPop([datum])

# 显示结果
print("Keypoints:", datum.poseKeypoints)
cv2.imshow("Output", datum.cvOutputData)
cv2.waitKey(0)


​9. 常见问题解决​

  1. ​CUDA 版本不匹配​​:

    • 如果报错 CUDA error: no kernel image,可能是 CUDA 12.1 与 OpenPose 的兼容性问题。

    • 尝试降级到 ​​CUDA 11.x​​ 或修改 CMakeLists.txt中的计算能力设置。

  2. ​DLL 缺失错误​​:

    • 将 C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.1/bin加入系统 PATH

  3. ​模型文件缺失​​:

    • 从 OpenPose 模型仓库手动下载 models/文件夹。


​10. 性能优化建议​

  • ​GPU 模式​​:确保 params中设置 "num_gpu": 1

  • ​分辨率调整​​:降低 net_resolution(如 256x256)以提升速度。

  • ​多线程​​:在 params中添加 "number_people_max": 1限制检测人数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yuanpan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值