最近准备看看rtpose
的代码,发现已经由openpose
这个项目维护着了,由于经常在windows
下调试代码,所以尝试了一下如何在windows
下编译openpose
源码,结果发现,我靠,炒鸡简单,Cmake
一步搞定。
写博客的目的在于,为了避免后续openpose
的项目组各种维护各种加新内容的时候又改变了很多库什么的,比如升级CUDA
版本、Opencv
之类的,所以这里记录一下当前配置的环境和所需加载内容。
其实博客压根不用看,直接下载zip
然后丢进cmake
编译完事。
国际惯例,参考博客:
[OpenPose]的主页
[OpenPose]的windows版本,本博客使用版本v1.3.0
,解压选择
官方安装说明
【注】强烈建议解压目录路径不要太长,比如解压在E:\code
下,不要解压在E:\code\xx\xx\xx\xx_xxx
之类的,我自己尝试的时候给我弹一堆问题。
CMake
,Visual Studio
,CUDA
,cudnn
具体地,我用的具体版本是:
CMake
: 3.9.0
Visual Studio
:建议2013以上,我用的2015
CUDA
: 9.0,下载戳这里
cudnn
:cudnn-9.0-windows10-x64-v7,戳这里
关于CUDA的安装就不说了,可以看别人博客,也可以看我配置caffe的时候配置CUDA的方法
【注】无需再下载opencv、caffe之类的东东了
也可以不下载,在CMake
的时候自动下载,但是会很慢,所以提前下载放好可以加快编译速度
pose_iter_440000.caffemodel,放入\openpose-1.3.0\models\pose\coco
pose_iter_160000.caffemodel,放入\openpose-1.3.0\models\pose\mpi
pose_iter_116000.caffemodel,放入\openpose-1.3.0\models\face
pose_iter_102000.caffemodel,放入\openpose-1.3.0\models\hand
三方库(放到\openpose-1.3.0\3rdparty\windows,解压方式选择解压到当前文件夹):
caffe_2018_01_18:链接:https://pan.baidu.com/s/1OmThy8QqIJyZHCT_S-jCLg 密码:7dp7
opencv_310:链接:https://pan.baidu.com/s/1bL6dHWaqf0LUy6u9BKaDoQ 密码:l4fj
caffe3rdparty_2018_02_13:链接:https://pan.baidu.com/s/16zut_NoCP7QZxo11a03S6w 密码:6ywg
在\openpose-1.3.0
文件夹中创建一个build
文件夹:
打开CMake
,这样设置路径
直接点击下方的Configure
依据自己的电脑环境选择VS版本,我选择是的2015,版本尽量高一点吧,可能有些C++ 11
的特性在低版本支持不太好。
【注】这里会下载三方库,库里包含opencv
和caffe
编译日志如下:
Windows OS support currently is experimental.
Feel free to send us any suggestion or bug you encounter.
Building with CUDA.
Downloading windows dependencies...
opencv_310.zip already exists.
caffe3rdparty_2018_02_13.zip already exists.
caffe_2018_01_18.zip already exists.
Windows dependencies downloaded.
Adding Example OpenPoseDemo
Adding Example 1_custom_post_processing
Adding Example 1_extract_from_image
Adding Example 2_extract_pose_or_heatmat_from_image
Adding Example 1_openpose_read_and_display
Adding Example 2_user_processing_function
Adding Example 3_user_input_processing_and_output
Adding Example 4_user_input_processing_output_and_datum
Adding Example 1_user_asynchronous_output
Adding Example 2_user_synchronous
Adding Example 3_user_asynchronous
Download the models.
Downloading body (COCO) model...
Model already exists.
Not downloading body (MPI) model
Downloading face model...
Model already exists.
Downloading hand model...
Model already exists.
Models Downloaded.
Configuring done
再点一次Configure
,我也不知道为什么,反正看很多时候使用CMake
最好点两次,如果框中有红色的条目就得注意了,肯定出错了,建议贴在评论区大家讨论,不要贴什么cuda
之类的错误,自己看cuda
的安装方法。
分析这个日志可以发现很多Download
,都是自动下载的,我提前下载好了,所以就提示exists
最后generate
一下完事。
用VS2015打开这个工程文件,生成解决方案:
等一会就完成了,但是运行的时候发现很对dll
找不到,可以选择添加添加电脑环境变量Path
的方法,也可以将缺的dll复制到C:\Windows\System32
或者C:\Windows\SysWOW64
或者是E:\openpose\openpose-1.3.0\build\x64\Release
中,我是直接复制到当前的编译目录,也就是可执行文件存在的目录中了,好像缺的挺多的,编译完的时候只有openpose.dll
,但是运行的时候还需要
这些dll
都能在E:\openpose\openpose-1.3.0
中找到,复制过去就行了
通过VS工程中的解决方案资源管理器中可以发现,提供的实例还是挺多的
在属性页选择当前选定内容
后,可以针对每个案例运行看看结果,我就运行第一个了,默认有图片,也可以自己选择图片,不要问怎么改,自行分析源码,理论很复杂,但是仅仅更改图片是很容易分析出来的:
上面说过,如果解压路径太长,CMake
可能出现的错误是:
Windows dependencies downloaded.
CMake Error at src/openpose/CMakeLists.txt:14 (if):
if given arguments:
"NOT" "FILE" "MATCHES" "E:/code_test/C++/openpose/openpose-1.3.0/include/openpose/experimental/*"
Regular expression
"E:/code_test/C++/openpose/openpose-1.3.0/include/openpose/experimental/*"
cannot compile
还有记得拷贝完那个三方库记得解压哈,不过是自动下载的就不需要了
这个代码工程比较大,其实我个人建议跑rtpose
的代码,虽然配置有点难度,但是源码看着很清晰。这个回头再说,下一篇博客可能就是解析openpose
的前身rtpose
的论文了:Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields
即将参考的博客是:Human pose estimation using OpenPose with TensorFlow
【更新日志2020-1-15】
这里有一个超级简单的,基于opencv调用openpose的caffe模型,实现多人姿态估计的代码:
https://github.com/spmallick/learnopencv/tree/master/OpenPose-Multi-Person