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和里面的算法了。
---------------------
作者:nkwavelet2009
来源:CSDN
原文:https://blog.csdn.net/nkwavelet2009/article/details/69524964
版权声明:本文为博主原创文章,转载请附上博文链接!