vs2015+dlib19.7+opencv_3.3.0的关于人脸识别的配置。

        这是我发的第一篇博客呢,先向大家介绍一下自己,我叫 Vencent,文三特,是一个鸭血都能吃出醉的感觉的人,是不是很迷,第一次在这发博客真的很激动呢,不过希望我的整理会对大家的学习有所帮助,好了,我们闲话少说,进入正题吧。
        这篇文章的标题是 Vs2015+dlib19.7+opencv_3.3.0关于人脸识别的配置。所以,这是一篇基于面部识别功能的的配置,若有其他功能需求,本博客 暂不负责哦,哈哈哈 。
        那我们按照顺序来,先说说 Dlib的设置。

(1)Dlib19.7的配置

          1、这是下载地址: Dlib19.7下载地址下载好之后,解压缩至任意位置,不过目录里不要有中文哦,不然会对程序的生成有影响的。在写这个面部识别程序时,会用到dlib的数据链接库文件,也就是dlib.lib,这个文件是需要用cmake生成的。因为我的系统是64位的,这里我下载的是cmake-3.10.0-rc2-win64, 下载链接。将cmake文件解压完后,点开bin目录下的cmake-gui.exe文件,然后我们先配置路径,现在我们先在dlib的文件夹里新建一个build文件,dlib文件里我将dlib解压到了D盘的目录下,所以我填的路径是 D:/ dlib-19.7/dlib-19.7和D:/dlib-19.7/dlib-19.7/build。然后点击configure,此时会跳出一个窗口,如图:
vs2015+dlib19.7+opencv_3.3.0的关于人脸识别的配置。_第1张图片
这里是64位系统所以选择Visual Studio 14 2015 Win64 ,然后点击Finish,
vs2015+dlib19.7+opencv_3.3.0的关于人脸识别的配置。_第2张图片
在出现configure done之后,点击Generate,在显示Generate done之后, 用VS2015打开刚才的build目录下的“Project.sln”。 点击生成菜单下的生成解决方案,等待项目编译完成,就可以发现“build\dlib\Debug\”目录下多了dlib.lib文件,就OK了。关于vs2015的dlib我会在最后和opencv的一起讲。

(2)Opencv3.3.0的配置

首先是opencv3.3.0的 下载地址,我选择的是在sourceforge中下载,也可以在github里下载,选择windows版本 直接下载opencv-3.3.0-vc14.exe文件
vs2015+dlib19.7+opencv_3.3.0的关于人脸识别的配置。_第3张图片vs2015+dlib19.7+opencv_3.3.0的关于人脸识别的配置。_第4张图片
进入之后会自动跳出下载提示。下载完后,点开opencv-3.3.0-vc14.exe文件,记得安装目录中不要有中文,我的安装目录如图:
vs2015+dlib19.7+opencv_3.3.0的关于人脸识别的配置。_第5张图片
安装完后的目录如图所示: vs2015+dlib19.7+opencv_3.3.0的关于人脸识别的配置。_第6张图片
接下来要配置opencv的环境变量,右键此电脑(我的电脑),点击属性,选择高级系统设置,跳出的界面如图:

vs2015+dlib19.7+opencv_3.3.0的关于人脸识别的配置。_第7张图片
点击上图中的环境变量,并选中窗口中的path,并进行编辑,将opencv目录下的build目录下的bin文件夹目录添加至其中,根据我的安装目录,添加的path如下:

vs2015+dlib19.7+opencv_3.3.0的关于人脸识别的配置。_第8张图片
然后点击确定,注销计算机后,环境变量的设置就生效了。

到这里,opencv的配置就结束了,接下来,我详细讲一下opencv和dlib在visual studio 2015的配置。

(3)Visual studio 2015的配置

第一步,我们要做的是用vs2015建立一个新项目,选win32控制台应用程序,然后点击下一步,选择空项目
vs2015+dlib19.7+opencv_3.3.0的关于人脸识别的配置。_第9张图片 vs2015+dlib19.7+opencv_3.3.0的关于人脸识别的配置。_第10张图片
而后点击完成,在右侧菜单栏的源文件选中,右键,添加新建项,选择.cpp文件,如图,点击添加

vs2015+dlib19.7+opencv_3.3.0的关于人脸识别的配置。_第11张图片
而后选择视图-->其他窗口-->属性管理器,打开属性管理器目录下的Microsoft.Cpp.x64.user,双击,进入属性页面,

vs2015+dlib19.7+opencv_3.3.0的关于人脸识别的配置。_第12张图片 vs2015+dlib19.7+opencv_3.3.0的关于人脸识别的配置。_第13张图片
而后选择页面中的VC++选项,选中其中的包含目录库进行编辑,填入opencv\build\include,opencv\build\include\opencv,opencv\build\include\opencv2这三个目录,根据我的安装路径所填的信息如图所示:
vs2015+dlib19.7+opencv_3.3.0的关于人脸识别的配置。_第14张图片
而后点击确定,并在VC++的库目录选项中添加opencv\build\x64\vc14\lib,根据我的安装路径添加的信息如下:
vs2015+dlib19.7+opencv_3.3.0的关于人脸识别的配置。_第15张图片
而后点击确定,再点击菜单中的C/C++选项,首先在其的附加包含目录中添加路径:dlib-19.7\dlib-19.7,根据我的解压目录,应该填的路径如图:
vs2015+dlib19.7+opencv_3.3.0的关于人脸识别的配置。_第16张图片
而后选中C/C++菜单下的预处理器选项中的预处理器定义,添加以下定义:
DLIB_PNG_SUPPORT
DLIB_JPEG_SUPPORT
点击确定后,选中左侧列表中的连接器菜单,首先给该选项下的附加库目录添加一些路径:dlib-19.7\build\dlib\Debug,opencv\build\x64\vc14\lib,根据我的装载目录,添加的信息如图:
vs2015+dlib19.7+opencv_3.3.0的关于人脸识别的配置。_第17张图片
而后选中链接器菜单下的输入选项,选择页面中的附加依赖项,添加以下文件:
opencv_world330.lib
opencv_world330d.lib
dlib.lib,如图:
vs2015+dlib19.7+opencv_3.3.0的关于人脸识别的配置。_第18张图片
做完这些后,将vs2015的菜单里的debug选项选择成x64选项
vs2015+dlib19.7+opencv_3.3.0的关于人脸识别的配置。_第19张图片
到这里,配置就基本完成啦,将这个项目保存后退出,接下来我讲一下如何试验一下面部识别。

(4)程序尝试

        首先新建一个新项目,按照上述,选择win32控制台应用程序,选择空项目,首先我们要将我们所需要的c文件添加入项目中,我们右键源文件,添加现有项,先是dlib-19.7\dlib\all下的source.cpp文件,然后是dlib-19.7\examples目录下的webcam_face_pose_ex.cpp文件,接下来,我们需要下载一个人脸库, 下载链接,下载好之后,将里面的shape_predictor_68_face_landmarks.dat文件放置到consoleapplication目录下,如果你要直接运行面部识别程序,需要将这个.dat文件,放入项目目录中x64目录下的的debug或者是release文件夹中,而后我们点击生成菜单下的,生成consoleapplication,也就是生成应用程序。生成成功了之后就可以进行调试运行了。
(PS:偷偷告诉你们,用release模式更流畅哦。)

效果图如下:
图中眼睛部分的和鼻子部分的轮廓识别线被打码影响了。

vs2015+dlib19.7+opencv_3.3.0的关于人脸识别的配置。_第20张图片
本图使用的是dlib自带的范例程序,各位大牛们也可以自己写一个,特征点的识别程序。
(经照片主人同意打码放在了这里,若是有转载以及其他使用的务必经过主人同意后使用,否则必将追究法律责任。)
接下来,我说一下可能出现的 error,warning处理方法
1、这个问题是我在建立的时候遇到的,软件报错 png.h文件找不到,这是十分令人苦恼的,于是,为了解决这个问题,我选择将png的头文件直接换成#include“······external/libpng/png.h”,此为pbg.h的文件目录,这样这个error就能解决了。
2、在Debug模式下OBJ字节数组太大而报错,在属性 -> C/C++ -> 命令行 加入/bigobj 就行了,如图:
vs2015+dlib19.7+opencv_3.3.0的关于人脸识别的配置。_第21张图片
3、若读取jpeg图片错误或找不到jpeglib.h,在C/C++菜单下的预处理器选项中加入DLIB_JPEG_STATIC即可。如图:
vs2015+dlib19.7+opencv_3.3.0的关于人脸识别的配置。_第22张图片
4、warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失,面对这种状况,我们有五种方法:

(1)转换Code文件为Unicode格式;
2)在Project -> Properties -> Configuration Properties -> C/C++ -> Advance  Disable Specific Warnings 中添加相应的警告编号:4819
3)或找出不符合Unicode格式的文件,然后在该文件的开始处加入下面的语句:
        # pragma warning (disable:4819)
4)哪个文件出现这个警告错误,打开它, VS2010的查找替换功能,打开允许正则表达式选项,选择当前窗口,查找替

 \n  \n ,  然后,这个世界就清净了。原因: 查找的 \n 是跨平台的回车,替换的 \n 却是当前代码页的回车了。

(5)第五种也是最好的一种,就是打开有该warning的文件,点击文件选高级保存选项,显示如下,或是其他别的编码格式

变编码格式为代码页936或Unicode,总之是适合自己的编码格式点击确定后保存,重新编译,warning消失。

到这里,我们今天的讲解就结束了。很感谢大家的耐心阅读,若是有所帮助请给我点个赞啊,这是我第一次在这里写博客,有很多不足的地方需要改进,还请各位大牛多多批评指正,谢谢!

ps:我是一个吃鸭血都能吃醉的人,哈哈哈


你可能感兴趣的:(vs2015+dlib19.7+opencv_3.3.0的关于人脸识别的配置。)