在VS2013下调用caffe接口识别手写字体(CPU)

前言

首先先来一波参考地址:
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

最后

这是本人混迹博客多年来,自己写的第一篇博客,有不足之处还望能一起交流学习,希望以上能对您有所帮助。最后祝大家学习生活愉快。么么哒~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值