前言
首先先来一波参考地址:
http://blog.csdn.net/qq_14845119/article/details/52541622
http://blog.csdn.net/qq_14845119/article/details/52541622
这里默认你已经在windows下配置好了caffe,关于
在Windows下配置caffe的方法可以参考这篇博客
第一步
首先新建一个控制台项目,并切换成release X64模式,切换方法可以参考这篇博客。
把\caffe-windows\examples\cpp_classification下
classification.cpp
和\caffe-windows\examples\mnist下
lenet.prototxt
lenet_iter_10000.caffemodel
mean.binaryproto
synset_words.txt
5.bmp
(注:也可根据自己的需求选择自己的模型、标签、图片。。。)
拷贝到刚才新建的工程下,如下:
第二步
接下来我们先修改classification.cpp中的代码。修改如下:
因为我的电脑没有GPU所以 在首行 添加
#define USE_OPENCV 1
#define CPU_ONLY 1
在main处修改如下:
新建一头文件head.h,代码如下
#include <caffe/common.hpp>
#include <caffe/layer.hpp>
#include <caffe/layer_factory.hpp>
#include <caffe/layers/input_layer.hpp>
#include <caffe/layers/inner_product_layer.hpp>
#include <caffe/layers/dropout_layer.hpp>
#include <caffe/layers/conv_layer.hpp>
#include <caffe/layers/relu_layer.hpp>
#include <caffe/layers/pooling_layer.hpp>
#include <caffe/layers/lrn_layer.hpp>
#include <caffe/layers/softmax_layer.hpp>
namespace caffe
{
extern INSTANTIATE_CLASS(InputLayer);
extern INSTANTIATE_CLASS(InnerProductLayer);
extern INSTANTIATE_CLASS(DropoutLayer);
extern INSTANTIATE_CLASS(ConvolutionLayer);
REGISTER_LAYER_CLASS(Convolution);
extern INSTANTIATE_CLASS(ReLULayer);
REGISTER_LAYER_CLASS(ReLU);
extern INSTANTIATE_CLASS(PoolingLayer);
REGISTER_LAYER_CLASS(Pooling);
extern INSTANTIATE_CLASS(LRNLayer);
REGISTER_LAYER_CLASS(LRN);
extern INSTANTIATE_CLASS(SoftmaxLayer);
REGISTER_LAYER_CLASS(Softmax);
}
第三步
我是用的release编译配置的,配置如下:
(注:请根据自己的文件目录实际修改。。)
(1)在包含目录下添加如
D:\caffepeizhi\caffe-windows\include;
D:\caffepeizhi\NugetPackages\boost.1.59.0.0\lib\native\include;
D:\caffepeizhi\NugetPackages\gflags.2.1.2.1\build\native\include;
D:\caffepeizhi\NugetPackages\glog.0.3.3.0\build\native\include;
D:\caffepeizhi\NugetPackages\hdf5-v120-complete.1.8.15.2\lib\native\include;
D:\caffepeizhi\NugetPackages\LevelDB-vc120.1.2.0.0\build\native\include;
D:\caffepeizhi\NugetPackages\lmdb-v120-clean.0.9.14.0\lib\native\include;
D:\caffepeizhi\NugetPackages\OpenBLAS.0.2.14.1\lib\native\include;
D:\caffepeizhi\NugetPackages\OpenCV.2.4.10\build\native\include;
D:\caffepeizhi\NugetPackages\protobuf-v120.2.6.1\build\native\include;
(2)在库目录下添加
D:\caffepeizhi\caffe-windows\Build\x64\Release;
D:\caffepeizhi\NugetPackages\boost_chrono-vc120.1.59.0.0\lib\native\address-model-64\lib;
D:\caffepeizhi\NugetPackages\boost_date_time-vc120.1.59.0.0\lib\native\address-model-64\lib;
D:\caffepeizhi\NugetPackages\boost_filesystem-vc120.1.59.0.0\lib\native\address-model-64\lib;
D:\caffepeizhi\NugetPackages\boost_system-vc120.1.59.0.0\lib\native\address-model-64\lib;
D:\caffepeizhi\NugetPackages\boost_thread-vc120.1.59.0.0\lib\native\address-model-64\lib;
D:\caffepeizhi\NugetPackages\gflags.2.1.2.1\build\native\x64\v120\dynamic\Lib;
D:\caffepeizhi\NugetPackages\glog.0.3.3.0\build\native\lib\x64\v120\Release\dynamic;
D:\caffepeizhi\NugetPackages\hdf5-v120-complete.1.8.15.2\lib\native\lib\x64;
D:\caffepeizhi\NugetPackages\LevelDB-vc120.1.2.0.0\build\native\lib\x64\v120\Release;
D:\caffepeizhi\NugetPackages\lmdb-v120-clean.0.9.14.0\lib\native\lib\x64;
D:\caffepeizhi\NugetPackages\OpenBLAS.0.2.14.1\lib\native\lib\x64;
D:\caffepeizhi\NugetPackages\OpenCV.2.4.10\build\native\lib\x64\v120\Release;
D:\caffepeizhi\NugetPackages\protobuf-v120.2.6.1\build\native\lib\x64\v120\Release;
(3)在输入–>>附加依赖项添加
opencv_core2410.lib;
opencv_highgui2410.lib;
opencv_imgproc2410.lib;
caffe.lib;
libcaffe.lib;
gflags.lib;
libglog.lib;
libopenblas.dll.a;
libprotobuf.lib;
leveldb.lib;
lmdb.lib;
hdf5.lib;
hdf5_hl.lib;
libboost_date_time-vc120-mt-s-1_59.lib;
libboost_filesystem-vc120-mt-s-1_59.lib;
第四步
(1) 将…\NugetPackages\gflags.2.1.2.1\build\native\x64\v120\dynamic\Lib目录下的文件全部复制到工程目录下,上图。。
(2)钥匙遇到错误:fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include “stdafx.h可以参考这篇博客
(3)编译运行。。我的运行结果如下:
(另:在输出运行结果的黑窗口闪退,可加代码system(“pause”);保留输出)窗口
(4)附上源码:链接:http://pan.baidu.com/s/1qXXcEk8 密码:238z
最后
这是本人混迹博客多年来,自己写的第一篇博客,有不足之处还望能一起交流学习,希望以上能对您有所帮助。最后祝大家学习生活愉快。么么哒~