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. node - DeprecationWarning: Mongoose: `findOneAndUpdate()` and `findOneAndDelete()` without the `use

           1,  原因是因为:findOneAndUpdate()内部会使用findAndModify驱动,驱动即将被废弃,所以弹出警告!附上官方解释:Mongoose v5.5.8: Depre ...

  2. redis数据导入与导出以及配置使用

    最近在研究redis 遇到redis requires Ruby version >= 2.2.2问题 解决办法是 先安装rvm,再把ruby版本提升至2.3.3 1.安装curl sudo y ...

  3. MyBatis Generator 下划线转驼峰命名

    MyBatis Generator配置文件--指定生成实体类使用实际的表列名作为实体类的属性名 table标签下的设置属性useActualColumnNames用于指定生成实体类时是否使用实际的列名 ...

  4. 007.Delphi插件之QPlugins,插件的卸载和重新加载

    效果图如下,可以反复卸载和重新加载.QPlugins这个插件,还没弄明白,摸索着跟着DEMO写 主窗口代码如下 unit Frm_Main; interface uses Winapi.Windows ...

  5. C++连接sqlite数据库的坑

    新的第一次用vs2013搞 C++连接sqlite数据库,遇到了很多问题,我也不搞不懂~~~下面写点小体会 首先: 你要先配置好sqlite的环境 参考链接: https://blog.csdn.ne ...

  6. 3 —— node —— 文件追加内容

    思想 : 先读取 , 再追加 const fs = require('fs') fs.readFile("./hello.txt","utf-8",(err,d ...

  7. HTML的文档结构与语法(一)

    一.走进Web开发 Web运行的原理: 二.HTML 1.1什么是html HTML是用来描述网页的一种语言 HTML指的是超文本标记语言(Hyper Text Markup Language) 超文 ...

  8. tf.argmax()函数作用

    tf.argmax()函数原型: def argmax(input, axis=None, name=None, dimension=None, output_type=dtypes.int64) 作 ...

  9. 023-PHP常用数组函数

    <?php $colors = array("red", "green", "blue","yellow"); p ...

  10. 面试题(9)之 leetcode-189

    题目描述 解法一: /** * @param {number[]} nums * @param {number} k * @return {void} Do not return anything, ...