Windows 7+VS2013将caffe编译成动态链接库并进行调用

电脑系统:win7旗舰版 VS2013 显卡计算能力太差,所以只考虑编译CPU版本。
第一步 下载Windowscaffe
目前caffe的Windows版本主要有两个不同来源,1、成电happynear的个人编译版本,地址:
https://github.com/happynear/caffe-windows
该版本还在持续更新,目前只适用Visual Studio 2015, CUDA 8.0及以上,happynear还在持续更新;2、微软于2015年给出的版本,地址:https://github.com/Microsoft/caffe
适用于VS2013和CUDA7.5,并且几乎不再更新。
由于个人PC性能有限,最后选择的是微软的版本。
第二步 编译
pull整个工程,打开caffe\windows文件夹,复制CommonSettings.props.example,再将CommonSettings.props.example重命名为CommonSettings.props放置在windows下。
用记事本或nodepad打开CommonSettings.props,根据自身电脑配置对以下地方进行修改:
Windows 7+VS2013将caffe编译成动态链接库并进行调用_第1张图片
然后右击.\windows\Caffe.sln\libcaffe,开始进行编译,生成dll,编译过程中,可能会出现“G:\NugetPackages\boost.1.59.0.0\lib\native\include\boost/format/alt_sstream_impl.hpp : error C2220: 警告被视为错误 - 没有生成“object”文件 (….\src\caffe\util\math_functions.cpp)”。
解决方法:(1)用 Visual Studio直接打开math_functions.cpp,保存即可。具体可以如下找到math_functions.cpp文件右击打开方式选择Visual Studio,OK了。或者打开Visual Studio->文件->打开->math_functions.cpp 保存就可以了。
(2)我们注意到错误提示里“警告被视为错误”,也就是说这本来是一个警告,只不过由于我们设置的严格,将这个警告视为错误,我们放松我们的检查错误规则就好了。
打开VS->项目->属性->配置属性->C/C++->常规->将警告视为错误修改为“否”,重新编译就好。
第三步 测试
编译完成,然后在classification工程中添加:
所需添加内容可以参考下面博客:http://blog.csdn.net/shakevincent/article/details/76098626
http://blog.csdn.net/sunshine_in_moon/article/details/51425844
注:编译的时候没有再添加caffe的那些库文件,只添加了libboost的lib文件。
最后再添加一个calssify.cpp,进行测试

/ calssify.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include 
#include 
#include 
#include 
#include 
#include "multi_recognition_gpu.h"
#pragma comment(lib,"classification.lib")
using namespace cv;

int _tmain(int argc, _TCHAR* argv[])
{
    std::string model_file("../Model/age.prototxt");
    std::string trained_file("../Model/age_net.caffemodel");
    std::string mean_file("../Model/mean.binaryproto");
    std::string label_file("../Model/age.txt");

    MultiClassifier myclassifier(model_file, trained_file, mean_file);//, label_file);//, label_file);

    Mat img = imread("G:\\DL\\caffe\\windows\\calssify\\Model\\demo_image.png");
    if (!img.data) //判断图片调入是否成功
        return -1; //调入图片失败则退出
    //cv::namedWindow("ss");
    //cv::imshow("ss", img);
    //cv::waitKey(0);
    //const Scalar bgr_mean(0, 0, 0);

    std::vector result = myclassifier.Classify(img);
    Prediction p = result[0];
    std::cout << "类别:" << p.first << "确信值:" << p.second << "\n";
    system("pause");
    return 0;
}

Windows 7+VS2013将caffe编译成动态链接库并进行调用_第2张图片“`

你可能感兴趣的:(caffe)