Dlib机器学习笔记1 -- Windows下的编译安装调试(超详细,菜鸟也成功)

来源:互联网 发布:网站手机号码提取软件 编辑:程序博客网 时间:2024/04/29 04:33

最近心血来潮,做的几个事情都需要用到人脸的关键点标定,因此想到用Dlib来做人脸检测和对齐,因此想记录一下Dilb学习过程中的点点滴滴,尤其是碰到的一些坑。第一篇主要是记录如何在windows下使用vs2013/vs2015编译安装dlib.lib,这样之后我们就可以用这个静态库进行后续的学习与开发。本人菜鸟一个,很不擅长系统架构、编译和各种复杂的配置调试,因此花了大约一整天才搞定dlib的编译、安装和人脸检测的测试,这个过程中碰到很多坑,上网查了一下有很多人也碰到过类似的问题,因此将问题记录下来,以及如何解决的也详细记录下来。


1. 下载Dlib
     DLib的官方地址是:http://dlib.net/

     

目前最新的版本是19.4,点击下载得到一个压缩文件。


2. 下载CMake
   CMake的官方地址是:https://cmake.org/

   

点击进入到下载页面,里面有很多Release版本。我不需要源码,因此选择了一个Binary版本,如下图:


现在我们已经下载了Dlib和CMake,暂时在当前目录下解压缩,如下图:



3. 用CMake来构建dlib工程
      将前面解压得到cmake和dlib目录放到自己选定的位置,然后运行cmake-gui.exe,然后填入正确的dlib源码位置和编译之后的工程想要存放的目录,本人配置如下图:


理论上配置好路径后,点击1,会提示你选择编译器,按照你的需求选择就可以。前提是你的电脑必须安装,比如你想编译VS2013 X64,你必须安装VS2013.然后点击2.等待即可。如果你这么做一次就成功了,那恭喜你,你太牛逼了!我的台式电脑使用的vs2013,我点击1之后的选择如下图:


点击“Finish”,然后出现如下的画面:


卧槽,这么多红色的Error信息!难道是点击1之后的选择有误?然后把Visual Studio 12 2013 ARM 和Visual Studio 12 2013  Win64都试了一遍,依然出现上述Error信息!仔细阅读Error信息,发现主要原因是vs2013不支持C++11,上百度谷歌搜索解决方案,解决办法多种多样,我也试过人家的各种解决办法,反正我是没有成功,可能是我太菜鸟了!此处给出两种别人给出的解决办法,我都试过,没有成功,但是思路值得借鉴。一种方法是在CMakeLists.txt 添加对C++11的支持,如下图:


还有各种各样的添加对C++11支持的代码,我都统统失败了!还有人不用Cmake直接在VS2013下建立一个空的工程,然后按照一定步骤编译dlib,本人也试了这种方式,但是最后还是失败了,失败的原因仍然是C++11。 dlib-19.4\dlib\algs.h文件中有这么一句话:


这就表明我们所下载的dlib-19.4必须至少要vs2015才能支持,这就很好的解释了为什么前面我所尝试那么多解决方式都是失败的!
既然dlib-19.4用到了C++11,而C++11在vs2013下不能完全支持,这就提醒我们如果选择一个较老的版本dlib就有可能成功,或者将vs2013升级为vs2015!后面的实验验证了我的这两个想法都是正确的!于是我又重新回到dlib的官方网站,查看Release Notes,如下图:


搜索关键字C++11,查看各种版本与C++11的关系,部分截图如下:


从上面的文字描述上看19.1版本是铁定要有C++11的支持才可以,而19.0版本还不是必须的,因此果断去下载一个19.0版本来试一下。然后重新采用CMake来构建dlib工程,新的配置如下:


点击Configure,由于想要编译一个64位版本的dlib,因此选择如下图:


点击“Finish”,果然成功了!如下图:


千辛万苦,终于走到这一步了,然后点击“Generate” 就生成了dlib的工程,马上去设定的目录看看生成的dlib工程,如下图:


打开这个工程,在vs2013下的工程截图如下:


上述生成的是x64版本的dlib工程。跟前面的步骤一模一样,我们还可以生成一个x86(或Win32)版本的工程,具体过程同上,此处不解释只给出截图:





现在可以着手编译dlib.lib了,为了适应不同版本的需求,分别在 x64和x86环境下编译了Debug和Release版本,如图:

         

        

          

       

4. 第一个dlib程序
     接下来我们就用前面编译好的dlib.lib来开始我们的第一个程序,用dlib来检测人脸。此处我用的是x86+Debug版本的dlib.lib。我将前面生成的4个版本的dlib.lib复制到另外专门的库目录下便于以后的学习。接下来建立了一个名为DlibTest的空工程,在写代码前将工程的一些配置设好,无非就是头文件、库的目录和名称之类的,不细说了,直接看图:





我所做的配置就是这些了,然后可以开始写代码了,也是直接看图更直观:


然后找了一个有两个人的图片作为测试图片,能够正常编译和运行,运行结果如下:


OK,大功告成!到此为止,完成了Dlib在windows下的编译、安装和测试,剩下的事情就是慢慢研究Dlib和里面的算法了。


【同步本人网易博客】Dlib机器学习笔记1 -- Windows下的编译安装调试(超详细,菜鸟也成功)



0 1
原创粉丝点击