这里编译使用的Cmake 3.20.3,VS2015,OpenPose版本为v1.7.0,编译的版本为python 3.5,CPU版的包。
1、下载代码
OpenPose的仓库地址:仓库地址,下载好以后解压到本地,这里是使用的OpenPose v1.7.0进行编译的。
2、下载模型文件
需要下载的模型包括5个,下载下来放到项目的models的对应目录下。
各个模型的下载地址(建议用迅雷等下载工具进行下载):
3、使用cmake-gui进行编译
这里使用的cmake版本为3.20.3,编译时在代码的根目录下创建文件夹build,作为编译生成的目录。
选择好路径以后,点击Configure按钮,会弹出一下弹框,选择x64。
点击Finish开始配置。
4、下载相关依赖文件
第一次配置需要下载一些相关的依赖文件,主要是opencv、caffe、caffe-cpu、caffe3rdparty以及pybind11。(其中caffe-cpu是由于要编译无CUDA的版本所依赖的,编译cuda版本可能不需要),因为在cmake里面下载较慢,也看不到下载进度,建议使用迅雷等下载工具进行下载,下载速度较快。
下载好以后放在项目的3rdparty/windows目录下,并将压缩包解压到当前目录(否则会报错)。
注:不一定是下载的以下版本,仅供参考。
- opencv_420_v14_15_2020_04_04.zip:点击下载
- caffe_16_2020_11_14.zip:点击下载
- caffe_cpu_2018_05_27.zip:点击下载
- caffe3rdparty_16_2020_11_14.zip:点击下载
pybind11是编译python包的依赖,需要从git仓库中下载:pybind11仓库地址。下载好以后解压到3rdparty/pybind11目录下。
5、修改编译配置
(1)勾选BUILD_PYTHON
(2)勾选下载模型文件
前面步骤下载好以后就没有问题。
(3)CPU版本修改
编译CPU版本需要修改CUDA_MODE、USE_CUDNN两个选项。
(4)添加编译使用的python解释器
如果不添加该项,会导致编译时使用环境变量里找到的python解释器,即使用的python版本不可控(编译出来的包也不会兼容小版本,3.7的包不能用3.5的环境运行)
点击Cmake-gui的Add Entry按钮,添加配置项。
其中Name为:PYTHON_EXECUTABLE,Type为:FILEPATH,Value为你要使用的python解释器路径。
6、配置完成
修改好配置项以后,再次点击Configure进行配置。
7、编译生成
配置完成后点击Generate开始生成。
生成完成后,点击Open Project在VS2015中打开项目,在Release/x64模式下,生成解决方案,等待完成即可。
到此,OpenPose的python包就编译完成了,在build/python/openpose/Release目录下,pyd文件。
8、在新项目中使用
创建项目,建立bin目录和models目录,bin目录放依赖的相关文件,models放模型文件。
(1)添加依赖文件
将build/x64/Release目录下的openpose.dll复制到项目的bin目录下,将build/bin目录下的全部文件复制到项目的bin目录下。
(2)添加模型文件
将所有模型文件全部复制到项目的models目录下。
(3)添加pyd文件
将build/python/openpose/Release目录下的pyopenpose.cp35-win_amd64.pyd文件复制到项目的根目录下。
(4)在代码里引入pyopenpose模块
dir_path = os.path.dirname(os.path.realpath(__file__))
os.environ['PATH'] = os.environ['PATH'] + ';' + dir_path + '/bin;'
import pyopenpose as op
print(op)
print("成功引入pyopenpose")
注意使用的python环境,运行结果如下,即为正常。
以上就是在Windows上编译CPU版的OpenPose python包,有疑问的朋友欢迎在评论区讨论。