最近学校布置了一个关于图像融合的作业,于是想利用Learn OpenCV 网站上的Face Morph 教程来设计一个人脸融合的Gif图,但是程序中需要用到DLib库,光是配置这个库就花费了我半天的时间,网络上的教程太多了,有一些并不一定适用。
我尝试了很多种办法,出现过各种各样的bug,走了许多弯路(比如说加上DLib库之后OpenCV的imread函数读不到图像数据,网络上说的解决方法是检查附加依赖项是否release使用了带d的lib,而debug使用了不带d的lib,但是我检查之后发现并没有错,所以最后一直没解决这个问题,又重新上网找其他配置方法),直到最后我选择了 DLib官网 提供的安装方法(全是英文,翻译了好久),才成功了。果然官方给的方法才是最实用的。
一、安装CMake
官网提供的方法是使用CMake生成库,首先我们的电脑上需要安装CMake,前往 CMake官网下载地址 下载,我使用的版本是3.14.2,选择msi格式的安装包(之所以选择msi格式是因为msi可以方便地添加环境变量到系统),根据自己电脑的处理器选择x64还是x86的安装包,我的电脑是x64处理器,所以我选择了红框框出来的安装包。
安装包下载完成之后,双击文件运行,点击next
勾选agreement,点击next
选择“Add CMake to the system PATH for all user”和“Create CMake Desktop Icon”,点击next
选择生成的路径,点击next
点击“Install”
安装完成
之后检查一下系统的环境变量中是否有添加CMake的bin路径。
右键点击桌面上“我的电脑” --> 弹出界面左栏中的“高级系统设置”
--> 选择“环境变量” --> 点击“系统变量”组框下的“Path”,点击“编辑”按钮
--> 弹出的窗口中检查是否有CMake/bin一栏,没有的话,点击“编辑”按钮自己手动添加
二、下载DLib
安装完CMake之后,前往 DLib官网files 下载DLib库,选择 dlib-19.17.zip ,下载到本地(我选择的是D盘),下载完成后解压,得到一个文件夹,文件夹中有如下文件
三、使用cmd命令让CMake编译Dlib库
使用WIN+R组合键调出“运行”界面,输入“cmd”调出命令行窗口
在命令行窗口,首先输入D:转到D盘下的目录(博主的DLib解压到了D盘),(tip:此时输入dir命令可以显示目录下的全部文件名,文件名输入一部分时可以按下“Tab”键可以自动补全),然后输入cd DLib跳转到DLib文件夹,继续输入cd dlib-19.17跳转到库目录下(还有一种方法是直接在库目录下使用shift+鼠标右键直接开启该目录下的命令行窗口,博主没有用过,你们可以试一下)
来到该目录下之后,就可以使用官方的方法编译DLib库啦
这里解释一下,第一行cd examples 是跳转到DLib库下的examples文件夹,该文件夹下有一个名为“CMakeLists.txt”的文件,里面有DLib的配置方案,反正按官方说的做就对了;第二行mkdir build 是生成一个名为build的文件夹,到时候CMake编译时生成的文件都会放在这里面,包括生成的库。第三行cd build 跳转到build文件夹下。当使用第四行命令cmake .. 就是CMake的编译命令,运行到这里时,若出现不是内部的命令,则需要把安装的Cmake的bin目录添加到环境变量PATH里,具体方法上面有。cmake .. 这两个点表示上一级文件夹,也就是examps文件夹,意思应该是让CMake去寻找“CMakeLists.txt”的文件。此安装默认生成32位的可执行文件,要想生成64位的,需要将cmake.. 命令替换为 cmake -G "Visual Studio 15 2017 Win64" -T host=x64 ..(最后两个点不要漏了)。第五行cmake --build . --config Release ,--build 是开始编译命令,. 一个点表示当前目录,即生成文件存放在当前目录下,--config Release 这里需要注意啦,如果写Release 最终将生成Release库,所以说如果你想生成一个Debug库的话,就需要改成--config Debug。
(博主已经生成过Release库,所以这次演示生成Debug库,生成目录名为buildDebug)
输入cmake -G "Visual Studio 15 2017 Win64" -T host=x64 ..
执行完成
输入cmake --build . --config Debug
执行的时间比较漫长,建议先去喝杯茶干点别的事,中间会出现一些warning没有关系,无视就行
Cmake执行结束
此时“D:\DLib\dlib-19.17\examples\buildDebug\dlib_build\Debug“” 文件夹下就会有编译好的库存在(注意:是dlib_build下的Debug文件夹)
将生成的库拷贝,放置到D:\DLib\Library\Debug\下,方便查找和添加
配置VS2017环境
打开VS2017,新建一个工程,选择工程的“属性管理器”(如果没有这一栏,可以点击“视图”-->“其他窗口”-->“属性管理器”)
(我这里已经把OpenCV的属性表加进去了)右键点击“Debug | x64”,在弹出的菜单下选择“添加新项目属性表”,弹出的窗口中将属性表命名为“DLib_x64_debug”,修改保持位置为“D:\DLib\Library\Debug”(以后新建DLib的工程只要Add这个属性表就行了)
然后右键点击DLib_x64_debug属性表,在弹出的菜单中选择“属性”
首先在“VC++目录”下编辑包含目录,添加“D:\DLib\dlib-19.17”,点击“确定”
在库目录下添加“D:\DLib\Library\Debug”,即dlib19.17.0_debug_64bit_msvc1916.lib所在的目录,点击“确定”
然后在“链接器”-->“输入”的“附加依赖项”中添加“dlib19.17.0_debug_64bit_msvc1916.lib”,点击“确定”
最后在“C/C++”-->“预编译器”中的“预处理器定义”中添加
DLIB_SUPPORT_JEPG
DLIB_SUPPORT_PNG
(注意:这里如果不添加这两个预编译指令的话,dlib::load_image函数就无法读取 .jpg .png格式的图像,程序会崩溃)
到此,环境已经配置完成。
这是我第一次写博客,费了挺多时间的,有什么错误或者漏缺还请多多指教。O(∩_∩)O哈哈~
过几天我还会写一个使用OpenCV和DLib编写FaceWorph人脸融合程序的教程,敬请期待哦!
参考文章
https://blog.csdn.net/qq583083658/article/details/79917066