【OpenPose-Windows】基于Openpose1.4.0的新项目环境配置
OpenPose1.4.0-based Project Configuration
前期Example和Demo的安装与环境配置参见
【OpenPose-Windows】 OpenPose1.4.0+VS2017+CUDA9.2+cuDNN9.2+Windows配置教程
环境
操作系统:Windows 10 Enterprise x64
OpenPose:1.4.0
CUDA: cuda_9.2.148_win10
cuDNN:cudnn-9.2-windows10-x64-v7.2.1.38
Visual Studio:Visual Studio Enterprise 2017
步骤1:文件组织
在解决方案中新建项目【Windows控制台应用程序】,切换解决方案配置为Release,右击新建的项目设为启动项目,打开属性页备用。
具体步骤如下:
- 项目文件夹
进入\$(SolutionDir)\$(ProjectDir)
(e.g. C:\Users\Skaldak\Documents\Visual Studio 2017\Projects\HIS\Posture 其中\HIS为解决方案路径 $(SolutionDir),\Posture 为项目路径 $(ProjectDir)) - 动态链接库dll
将\openpose目录下
\include文件夹,
\models文件夹与
\openpose\build目录(\build为CMake生成工程的目录)下的
\bin文件夹
拷贝至\$(SolutionDir)\$(ProjectDir)。
将\openpose\build\x64\Release目录下的
openpose.dll
(若是Debug配置则为\openpose\build\x64\Debug目录下的
openposed.dll)
拷贝至\$(SolutionDir)\$(ProjectDir)\bin - 第三方3rdparty
在\$(SolutionDir)\$(ProjectDir)目录下新建
\3rdparty文件夹,
将\openpose\3rdparty\windows目录下的
\caffe文件夹,
\caffe_cpu文件夹,
\caffe3rdparty文件夹与
\opencv文件夹
拷贝至\$(SolutionDir)\$(ProjectDir)\3rdparty - OpenPose静态库lib
在\$(SolutionDir)\$(ProjectDir)\3rdparty目录下新建
\openpose文件夹,
将\openpose\build\src\openpose\Release目录下的
openpose.lib库
(若是Debug配置则为\openpose\build\src\openpose\Debug目录下的
openposed.lib库)
拷贝至\$(SolutionDir)\$(ProjectDir)\3rdparty\openpose
最终文件结构如下:
- $(SolutionDir)
- $(ProjectDir)
- 3rdparty
- caffe
- caffe_cpu
- caffe3rdparty
- freeglut
- opencv
- openpose
- bin
- include
- models
- 3rdparty
- $(ProjectDir)
步骤2:属性配置
转到刚才备用的属性页,以下列出与默认配置所作改动:
关于仅使用 CPU(USE_CPU_ONLY)与使用 NVIDIA GPU(USE_CUDA):
注意电脑硬件支持否则运行时可能报错Cuda check failed:
USE_CPU_ONLY配置需要caffe_cpu框架支持而USE_CUDA配置需要caffe框架支持;
USE_CPU_ONLY配置与USE_CUDA配置的预处理器不同;
USE_CUDA配置包含CUDA附加包含目录以及CUDA附加依赖项。
关于 DEBUG配置与 RELEASE配置:
注意以下lib/dll/.h一致性否则可能报错无法定位程序输入点于动态链接库:
使用Debug配置CMake编译,生成OpenPose Library得到的lib/dll只能用于Debug配置;
使用Release配置CMake编译,生成OpenPose Library得到的lib/dll只能用于Release配置。
二者lib与dll有别: DEBUG配置附加依赖项中静态库部分末尾有d,动态链接库部分末尾有d;
RELEASE配置中预处理器包含NDEBUG。
-
常规>全程序优化>无全程序优化
-
调试>环境>
(若仅使用CPU)PATH=$(ProjectDir)bin;$(ProjectDir)3rdparty\caffe_cpu\bin;$(ProjectDir)3rdparty\opencv\x64\vc14\bin;$(ProjectDir)3rdparty\freeglut\bin;$(ProjectDir)3rdparty\spinnaker\bin;$(LocalDebuggerEnvironment)
(若使用NVIDIA GPU)PATH=$(ProjectDir)bin;$(ProjectDir)3rdparty\caffe\bin;$(ProjectDir)3rdparty\opencv\x64\vc14\bin;$(ProjectDir)3rdparty\freeglut\bin;$(ProjectDir)3rdparty\spinnaker\bin;$(LocalDebuggerEnvironment)
注意这里不能出现空格,建议直接复制粘贴 -
C/C++>
-
常规>
- 附加包含目录>
(若仅使用CPU)$(ProjectDir)3rdparty\opencv\include;$(ProjectDir)3rdparty\caffe_cpu\include;$(ProjectDir)3rdparty\caffe_cpu\include2;$(ProjectDir)3rdparty\caffe3rdparty\include\boost-1_61;$(ProjectDir)3rdparty\caffe3rdparty\include;$(ProjectDir)include;%(AdditionalIncludeDirectories)
(若使用NVIDIA GPU)$(ProjectDir)3rdparty\opencv\include;$(ProjectDir)3rdparty\caffe\include;$(ProjectDir)3rdparty\caffe\include2;$(ProjectDir)3rdparty\caffe3rdparty\include\boost-1_61;$(ProjectDir)3rdparty\caffe3rdparty\include;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include;$(ProjectDir)include;%(AdditionalIncludeDirectories)
- 调试信息格式>C7 兼容 (/Z7)(启用该项在Debug配置下断点有效)
- 多处理器编译>(是 (/MP))
- 附加包含目录>
-
优化>
(若为Release配置)- 优化>优化(优选速度) (/Ox)
- 优选大小或速度>代码速度优先 (/Ot)
(若为Debug配置)
- 优化>已禁用 (/Od)
- 内联函数扩展>已禁用 (/Ob0)
-
预处理器>
(若仅使用CPU)NDEBUG;USE_CAFFE;USE_CPU_ONLY;CPU_ONLY;CMAKE_INTDIR="Release";%(PreprocessorDefinitions)
(若使用NVIDIA GPU)NDEBUG;USE_CAFFE;USE_CUDA;CMAKE_INTDIR="Release";%(PreprocessorDefinitions)
(若为Debug配置则删除NDEBUG;
并将CMAKE_INTDIR="Release"
改为CMAKE_INTDIR="Debug"
即可) -
代码生成>运行库>多线程 DLL (/MD)(启用该项否则在Debug配置下报错)
-
语言>符合模式>否
-
预编译头>不使用预编译头
-
高级>编译为>编译为 C++ 代码 (/TP)
-
-
链接器>
-
常规>启用增量链接>否 (/INCREMENTAL:NO) (此项建议)
-
输入>附加依赖项>
(若仅使用CPU)$(ProjectDir)3rdparty\openpose\openpose.lib;$(ProjectDir)3rdparty\opencv\x64\vc14\lib\opencv_world310.lib;$(ProjectDir)3rdparty\caffe3rdparty\lib\gflags.lib;$(ProjectDir)3rdparty\caffe3rdparty\lib\glog.lib;$(ProjectDir)3rdparty\caffe_cpu\lib\caffe.lib;$(ProjectDir)3rdparty\caffe_cpu\lib\caffeproto.lib;$(ProjectDir)3rdparty\caffe3rdparty\lib\libboost_system-vc140-mt-1_61.lib;$(ProjectDir)3rdparty\caffe3rdparty\lib\libboost_filesystem-vc140-mt-1_61.lib;%(AdditionalDependencies)
(若使用NVIDIA GPU)$(ProjectDir)3rdparty\openpose\openpose.lib;$(ProjectDir)3rdparty\opencv\x64\vc14\lib\opencv_world310.lib;$(ProjectDir)3rdparty\caffe3rdparty\lib\gflags.lib;$(ProjectDir)3rdparty\caffe3rdparty\lib\glog.lib;$(ProjectDir)3rdparty\caffe\lib\caffe.lib;$(ProjectDir)3rdparty\caffe\lib\caffeproto.lib;$(ProjectDir)3rdparty\caffe3rdparty\lib\libboost_system-vc140-mt-1_61.lib;$(ProjectDir)3rdparty\caffe3rdparty\lib\libboost_filesystem-vc140-mt-1_61.lib;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\lib\x64\cudart_static.lib;%(AdditionalDependencies)
-
步骤3:程序调试
打开之前CMake建立的解决方案OpenPose.sln,复制任意项目Source Files文件夹下cpp源文件的内容到我们新建的项目源文件中,可以正常运行。
以上属性配置有若干冗余,部分为建议选项。
更新于2018/09/17,增加Debug配置。