Dlib是一个C++库,包含了许多机器学习算法。它是跨平台的,可以应用在Windows、Linux、Mac、embedded devices、mobile phones等。它的License是Boost Software License 1.0,可以商用。Dlib的主要特点可以参考官方网站:http://dlib.net/
下面说一下在window7 vs2013上的编译过程:
有两种方法,一种方法是通过CMake;一种是通过自己创建一个空的控制台工程,来生成Dlib静态库。
这里说一下通过空的控制台生成静态库的过程:
1、 新建一个空的控制台工程Dlib;
2、 目前Dlib最新的Release版本是v19.2,但是v19.2需要有vs2015的支持,这里通过vs2013编译v19.1版本,从https://github.com/davisking/dlib/releases 下载v19.1;
3、 将dlib/all/source.cpp和dlib/external/中zlib、libpng、libjpeg三个目录下的.c、.cpp文件加入到工程中,加入zlib、libpng、libjpeg文件是为了能够让dlib直接支持读取.png、.jpeg格式图像;
4、 dlib工程属性,修改主要包括:
(1)、配置属性--> 常规--> 配置类型:静态库 (.lib);
(2)、C/C++ --> 常规--> 附加包含目录:添加zlib/libpng/libjpeg头文件;
(3)、C/C++ --> 预处理器 --> 预处理器定义:DLIB_PNG_SUPPORT、DLIB_JPEG_SUPPORT;
(4)、解决方案平台:x64
5、 修改源码:
(1)、dlib/ matrix/matrix_utilities.h : error C2057,lines: 2665,将
{ COMPILE_TIME_ASSERT(pixel_traits<P>::num > 0); matrix<T,pixel_traits<P>::num,1> m; pixel_to_vector_helper<P>::assign(m,pixel); return m; }
调整为:
{ COMPILE_TIME_ASSERT(static_cast<int>(pixel_traits<P>::num) > 0); matrix<T,pixel_traits<P>::num,1> m; pixel_to_vector_helper<P>::assign(m,pixel); return m; }
(2)、dlib/external/libpng/pngread.c: error C4703, lines: 1029, 将
{ png_color_8p sig_bit; png_get_sBIT(png_ptr, info_ptr, &sig_bit); png_set_shift(png_ptr, sig_bit); }
调整为:
{ png_color_8p sig_bit = NULL; png_get_sBIT(png_ptr, info_ptr, &sig_bit); png_set_shift(png_ptr, sig_bit); }
6、 选中工程Dlib,在x64下即可生成Dlib静态库。