VS2013调用caffe新建自己的工程详细过程
在windows上编译好caffe之后(纯CPU),很多人都会存在这样的问题,我该如何去调用编译好的caffe来新建自己的工程开发自己的应用呢,这个问题折腾了一下午,终于成功实现了在自己新建的工程中调用编译好的caffe,下面就记录一下,新建VS2013工程实现caffe的具体过程。
一、Windows下编译好caffe
这里不具体叙述编译过程,网上的教程很多,这里给出一个详细编译过程的链接:http://www.cnblogs.com/cxyxbk/p/5902034.html
这里我给出了一个未编译的caffe库和一个我已经编译好的caffe库,欢迎下载:
未编译的caffe库:http://pan.baidu.com/s/1geHKFOv
编译好的caffe库:http://pan.baidu.com/s/1hsmkKni
编译过程中下载的依赖库NugetPackages:http://pan.baidu.com/s/1hsh1eOc
如果要自己编译的话这里要注意编译caffe时候需要把解决方案平台改成x64平台, Debug模式和Release模式都编译一下,后面有可能都会用到,切记,两种模式都一定要编译一次。
二、新建一个空的控制台VS2013工程,起名为caffe-test,并对该工程进行caffe配置,这个配置是在已经成功编译好caffe和下载好了依赖库NugetPackages的前提下进行配置的。
1)将工程解决方案平台改为x64
就将下面这个地方进行配置管理器,新建一个x64进行。
2)下载OpenCV.2.4.10库和boost_1_59_0库;这两个库必须下载,后面配置会用到,如果你电脑上已经有OpenCV库和boost库但是版本和这个不一致的话,建议你单独去下载这两个库,否则后面会出现无法运行此程序的错误。下载好boost库之后,需要对它进行安装,安装过程:
(1)双击boost_1_59_0文件夹下bootstrap.bat文件,之后会出现一下命令框
(2)关闭该命令框,查看是否生成了bjam.exe文件,双击该文件,同样会弹出一个命令框,之后耐心等待约10分钟,直到出现如下显示才可关闭:
3)设置工程路径(下面默认都是在Release模式下配置)
(1)项目-> 属性 -> 配置属性 -> VC++目录 -> 包含目录
F:\caffe-windows\include
F:\NugetPackages\boost.1.59.0.0\lib\native\include
F:\NugetPackages\glog.0.3.3.0\build\native\include
F:\NugetPackages\gflags.2.1.2.1\build\native\include
F:\NugetPackages\protobuf-v120.2.6.1\build\native\include
F:\NugetPackages\OpenBLAS.0.2.14.1\lib\native\include
F:\NugetPackages\OpenCV.2.4.10\build\native\include
(2)项目-> 属性 -> 配置属性 -> VC++目录 -> 库目录
F:\NugetPackages\lmdb-v120-clean.0.9.14.0\lib\native\lib\x64
F:\NugetPackages\LevelDB-vc120.1.2.0.0\build\native\lib\x64\v120\Release
F:\NugetPackages\OpenCV.2.4.10\build\native\lib\x64\v120\Release
F:\caffe-windows\Build\x64\Release
F:\opencv2.4.10\build\x64\vc12\lib
F:\NugetPackages\boost_date_time-vc120.1.59.0.0\lib\native\address-model-64\lib
F:\NugetPackages\boost_filesystem-vc120.1.59.0.0\lib\native\address-model-64\lib
F:\NugetPackages\boost_system-vc120.1.59.0.0\lib\native\address-model-64\lib
F:\NugetPackages\glog.0.3.3.0\build\native\lib\x64\v120\Release\dynamic
F:\NugetPackages\boost_thread-vc120.1.59.0.0\lib\native\address-model-64\lib
F:\NugetPackages\boost_chrono-vc120.1.59.0.0\lib\native\address-model-64\lib
F:\NugetPackages\gflags.2.1.2.1\build\native\x64\v120\static\Lib
F:\NugetPackages\hdf5-v120-complete.1.8.15.2\lib\native\lib\x64
F:\NugetPackages\protobuf-v120.2.6.1\build\native\lib\x64\v120\Release
F:\NugetPackages\OpenBLAS.0.2.14.1\lib\native\lib\x64
F:\boost_1_59_0\lib64-msvc-12.0(必须是和caffe配置的boost_1_59_0版本一致,如果第一次下载,需要对boost库进行安装,安装详细过程网上有)
(3)项目-> 属性 -> 配置属性 -> 链接器 -> 输入 ->附加依赖项
libboost_date_time-vc120-mt-1_59.lib
libboost_filesystem-vc120-mt-1_59.lib
libboost_system-vc120-mt-1_59.lib
libglog.lib
libcaffe.lib
gflags.lib
gflags_nothreads.lib
hdf5.lib
hdf5_hl.lib
libprotobuf.lib
libopenblas.dll.a
Shlwapi.lib
opencv_core2410.lib
opencv_highgui2410.lib
opencv_imgproc2410.lib
LevelDb.lib
lmdb.lib
opencv_video2410.lib
opencv_objdetect2410.lib
(4)项目 -> 属性 -> 配置属性 -> C/C++ -> 预处理器 -> 预处理器定义 -> CPU_ONLY
(5)项目 -> 属性 -> 配置属性 -> C/C++ -> 常规 -> 将警告视为错误 -> 否
以上就是所有的配置过程,下面写个小程序测试一下:运行结果如下:
上面正常运行了,也得出了正常结果,那么我们对配置好的环境测试一下使用opencv读入图片测试一下
运行一下:
出现错误:无法启动此程序,因为计算机中丢失libopenblas.dll。尝试重新安装该程序以解决此问题
解决方法:
回到你编译caffe的位置,在F:\caffe-windows\Build\x64\Release文件夹下找到下面五个文件:
libgcc_s_seh-1.dll,
libgflags.dll
libgfortran-3.dll,
libglog.dll
libopenblas.dll
libquadmath-0.dll
将这六个.dll文件复制到你刚刚新建的caffe-test工程下x64文件夹下Release文件夹中,
再次运行该程序:
出现错误:无法启动此程序,因为计算机中丢失opencv_core241o.dll。尝试重新安装该程序以解决此问题.
解决方法:回到你编译caffe的位置,在F:\caffe-windows\Build\x64\Release文件夹下找到下面五个文件:
opencv_core2410.dll,opencv_highgui2410.dll,opencv_imgproc2410.dll,opencv_objdetect2410.dll,opencv_video2410.dll
将这五个文件同样放置在你刚刚新建的caffe-test工程下x64文件夹下Release文件夹中。这里注意了,千万不要从你安装的opencv库中去拷贝这几个文件,切记,切记。
再次运行程序:
出现错误:无法启动此程序,因为计算机中丢失libgflags-debug.dll。尝试重新安装该程序以解决此问题.
解决方法:回到你编译caffe的位置,在F:\caffe-windows\Build\x64\Debug文件夹下找到libgflags-debug.dll文件,并将它拷贝上述caffe-test工程下x64文件夹下Release文件夹中,注意了这次拷贝的文件来自于Debug编译后产生的。此时该Release文件夹中应该有下面这么多文件了
此时,对程序记得一定要“重新生成解决方案”,不然还是无法正常运行的。
至此,所有的配置都完成了,看到这张图片之后是不是觉得很爽啊,哈哈。