openpose笔记--Win11编译安装OpenPose(Python API)

目录

1--前言

2--下载

3--编译安装

4--测试


1--前言

        起初博主一直在 linux 环境下配置,但 caffe 和 protobuf 之间的不兼容导致很多坑(都是泪),后面打算采用 docker 进行配置,这里提供一个 win11 的成功安装过程;

本机配置:

        Cuda 11.1

        CudaNN 8.0.4

        RTX 3060 GPU

        Python 3.9

2--下载

① 下载 Openpose 源码

git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose.git

默认不会下载 caffe 和 pybind11,这里提供两个可用的版本,下载后放置在 3rdparty 文件夹内,当然也可以 git clone 下载其它版本:

caffe源码包,密码:sysu

pybind11源码包,密码:sysu

② 执行 3rdparty/windows 的 5 个文件

③ 执行 models/getModels.sh 手动下载所有模型,避免编译过慢:

3--编译安装

        这里博主选用 Visual Studio 14 2015 Win64进行编译,需自主下载配置或使用其它版本;

mkdir build

cd build

cmake -G"Visual Studio 14 2015 Win64" -DBUILD_PYTHON=ON ..

cmake --build .

 ① 可能出现的问题1:找不到相应的 python 版本和依赖库

解决方法:在 CMakeLists.txt 指定 python 的路径,可能需要修改 windows 的环境变量,确保 python 能够找到;这里博主选用了 conda 环境的 python3.9;

        一般全程编译没报错,在 build/python/openpose/Debug 路径下会出现对应 python 版本的pyd 文件,这里博主为 pyopenpose.cp39-win_amd64.pyd;同时 /build/x64/Debug 文件夹会出现 openposed.dll 文件;

4--测试

        测试代码(需修改相应的路径),也可以使用 openpose 提供的 01_body_from_image.py 进行测试;

import sys
import cv2
import os
from sys import platform
import argparse

# 修改你的 pyopenpose.cp39-win_amd64.pyd 路径
sys.path.append("C:/Users/Liujinfu/Desktop/openpose-master/build/python/openpose/Debug") 
# 修改你的 openposed.dll 路径
os.environ['PATH'] = os.environ['PATH'] + ';'+ "C:/Users/Liujinfu/Desktop/openpose-master/build/x64/Debug;" \
                                        + "C:/Users/Liujinfu/Desktop/openpose-master/build/bin;"
import pyopenpose as op

if __name__ == "__main__":
    params = dict()
    params["model_folder"] = "C:/Users/Liujinfu/Desktop/openpose-master/models" # 修改你的 model 路径

    # Starting OpenPose
    opWrapper = op.WrapperPython()
    opWrapper.configure(params)
    opWrapper.start()

    # Process Image
    Image_path = "C:/Users/Liujinfu/Desktop/openpose-master/examples/media/COCO_val2014_000000000192.jpg" 
    datum = op.Datum()
    imageToProcess = cv2.imread(Image_path)
    datum.cvInputData = imageToProcess
    opWrapper.emplaceAndPop(op.VectorDatum([datum]))

    # Display Image
    print("Body keypoints: \n" + str(datum.poseKeypoints))
    cv2.imshow("Test Demo", datum.cvOutputData)
    cv2.waitKey(0)

猜你喜欢

转载自blog.csdn.net/weixin_43863869/article/details/130017977