Dlib的官方解释是:

Dlib is a modern C++ toolkit containing machine learning algorithms and tools for creating complex software in C++ to solve real world problems. It is used in both industry and academia in a wide range of domains including robotics, embedded devices, mobile phones, and large high performance computing environments. Dlib's open source licensing allows you to use it in any application, free of charge.

总之简单的说就是:一个集图像处理、计算机视觉、机器学习、深度学习于一身的视觉相关的瑞士军刀就是了,重要的是,它跟OpenCV一样是开源免费的。

在windows中编译Dlib是比较简单的,先说一下我的配置以及相关的依赖库

  • Cmake:配置和生成VS2015工程;

  • VS2015:编译DLib工具的lib文件;

  • CUDA9和cudnn7:为了打开CUDA功能;

  • jpeg:依赖项,我下载了jpegsr9c.zip;

  • libpng:依赖项,我下载了lpng1635.zip;

  • zlib:依赖项,我下载了zlib-1.2.11.tar.gz;

  • Dlib:我下载了dlib-19.15,应该是目前最新版本了把,支持VC2015和VS2017;

OK,下载了这些之后,我默认是先安装好了VS、CUDA和cudnnde,然后就先编译依赖项,顺序依次是libjpegzliblpng。接下来就是配置Dlib的VS工程,在用Cmake打开之前,先把下载的DLib解压出来的,然后修改一下文件dlib/CMakeLists.txt,注意不是解压出来根目录的CMakeLists.txt,然后修改第719行到724行为:


#set(DLIB_USE_CUDA OFF CACHE STRING ${DLIB_USE_BLAS_STR} FORCE )
#toggle_preprocessor_switch(DLIB_USE_CUDA)
#if (USING_OLD_VISUAL_STUDIO_COMPILER)
#   message(STATUS "*** Dlib CUDA support requires C++11 but your compiler doesn't support it. ***")
#endif()
#message(STATUS "Disabling CUDA support for dlib.  DLIB WILL NOT USE CUDA") set(source_files ${source_files} 
   cuda/cuda_dlib.cu 
   cuda/cudnn_dlibapi.cpp
   cuda/cublas_dlibapi.cpp
   cuda/cusolver_dlibapi.cu
   cuda/curand_dlibapi.cpp
   cuda/cuda_data_ptr.cpp
   cuda/gpu_data.cpp
   )
set(dlib_needed_libraries ${dlib_needed_libraries} 
   ${CUDA_CUBLAS_LIBRARIES} 
   ${cudnn}
   ${CUDA_curand_LIBRARY}
   ${cusolver}
   )
if(openmp_libraries)
   list(APPEND dlib_needed_libraries ${openmp_libraries})
endif() include_directories(${cudnn_include})
message(STATUS "Enabling CUDA support for dlib.  DLIB WILL USE CUDA")

这个主要还是为了打开CUDA,如果不用CUDA就不用了。

然后Cmake打开,这里需要注意,如果要配置CUDA的话,就一定要用管理员权限打开CMake,配置相关项目如下:

这里面有几个我是没有配置的:BLAS、CPACK、GIF、mkl,这几个是没有配置。

配置好之后,生成工程。然后打开VS,如果要使用CUDA,这里最好也用管理员权限打开VS2015,然后打开工程:

同样,这里也是对整个解决方案执行编译,然后再对INSTALL单独编译打包头文件和Lib文件,如果前面配置没有什么问题的话,这里应该是会灰常顺利的。打包出来的库文件如下:

然后,这里要注意,虽然打包出来了Dlib的头文件,但是在用的时候要把前面编译出来的其他依赖库的头文件加到工程里,这个后面讲DLib的例子的时候具体再说吧。

天地不仁,以万物為刍狗;

圣人不仁,以百姓為刍狗。

瑞士军刀DLib的VS2015编译的更多相关文章

  1. VS2015编译boost1.62

    VS2015编译boost1.62 Boost库是一个可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一. Boost库由C++标准委员会库工作组成员发起,其中有些内容有 ...

  2. VS2015编译Qt5.7.0生成支持XP的静态库(很不错)

    一.编译工具 1.VS2015 编译Qt5.7.0的所需VS版本:Visual Studio 2013 (Update1)或Visual Studio 2015 (Update2).因为Update补 ...

  3. Win7 下用 VS2015 编译最新 openssl(1.0.2j)包含32、64位debug和release版本的dll、lib(8个版本)

    Win7 64位系统下通过VS2015编译好的最新的OpenSSL(1.0.2j)所有八个版本的链接库, 包含以下八个版本: 1.32位.debug版LIB: 2.32位.release版LIB: 3 ...

  4. 用VS2015编译sqlcipher

    简介 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在很多嵌 ...

  5. 实践详细篇-Windows下使用VS2015编译的Caffe训练mnist数据集

    上一篇记录的是学习caffe前的环境准备以及如何创建好自己需要的caffe版本.这一篇记录的是如何使用编译好的caffe做训练mnist数据集,步骤编号延用上一篇 <实践详细篇-Windows下 ...

  6. VS2015编译FFMPEG,修改FFmpeg缓冲区大小解决实时流解码丢包问题,FFmpeg错误rtsp流地址卡死的问题,设置超时

    之前尝试过很多网上利用Windows编译FFmpeg的文章,都没有办法编译X64位的FFmpeg,有些教程中有专门提到编译64位的FFmpeg需要下载mingw-w64-install,但是编译的过程 ...

  7. vs2015编译caffe

    有些时候,需要在python3的环境下import caffe,需要用vs2015在python3的环境下,编译pycaffe. microsoft的windows版本的caffe,依赖的库Nuget ...

  8. 使用VS2015编译xlslib库

    环境: win7_x64,VS2015 开始: 一.下载xlslib库 xlslib-package-2.5.0.zip 解压到一个指定目录,如E:\library\xlslib-package-2. ...

  9. [转][JSBSim]使用VS2015编译JSBSim

    转自csdn原文:https://blog.csdn.net/yu_lei_/article/details/81463187 请大家去看原文,原文有图片和资源,本文仅供本人参考 权威参考:http: ...

随机推荐

  1. PHP截取指定字符前的字符串

    $str = 'A|B||C|D'; echo substr($str,0,strpos($str, '||')); 输出:A|B

  2. 虚拟机下安装Maven

    1.首先需要下载maven安装包(我下载的是apache-maven-3.5.3版本) 官网下载:http://maven.apache.org/download.cgi 2.将压缩包放到虚拟机下(我 ...

  3. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-minus

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  4. Spark 下操作 HBase(1.0.0 新 API)

    hbase1.0.0版本提供了一些让人激动的功能,并且,在不牺牲稳定性的前提下,引入了新的API.虽然 1.0.0 兼容旧版本的 API,不过还是应该尽早地来熟悉下新版API.并且了解下如何与当下正红 ...

  5. python中excel表格的读写

    #!usr/bin/env python #-*- coding:utf-8 -*- import xlrd import xlwt from xlutils.copy import copy imp ...

  6. Redis 详解 (六) RDB 持久化

    目录 1.RDB 简介 2.触发方式 ①.自动触发 ②.手动触发 3.恢复数据 4.停止 RDB 持久化 5.RDB 的优势和劣势 6.RDB 自动保存的原理  前面我们说过,Redis 相对于 Me ...

  7. Ajax学习系列——Ajax介绍及优缺点

    一.什么是Ajax Ajax即“Asynchronous JavaScript And XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术. Ajax = 异步Jav ...

  8. 74.Python中ORM聚合函数详解:Max,Min

    Max和Min:获取指定对象的最大值和最小值. 1. 比如:想要获取Author表中的最大的年龄和最小的年龄.示例代码如下: from django.http import HttpResponse ...

  9. 3分钟教你用python制作一个简单词云

    首先需要安装三个包: # 安装:pip install matplotlib # 安装:pip install jieba # 安装pip install wordcloud 1.制作英文字母的词云 ...

  10. 六十二、SAP中的字符串运算符与文本拼接

    一.代码如下 二.输出效果如下