《Dlib:安装Dlib库》

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/mars_xiaolei/article/details/90604806

目录

 

开发环境

 

Dlib下载

 

下载和安装CMake

编译Dlib源码

 

生成lib链接库 

 

配置Dlib 

 

遇到的问题

测试代码


开发环境


操作系统:windows10专业版

VS版本:VS2015

Dlib版本:Dlib19.17

CMake版本:CMake3.13.2 64位

 

Dlib下载


官网:http://dlib.net/

sourceforge:https://sourceforge.net/projects/dclib/files/dlib/ 

 

下载和安装CMake


下载链接:https://cmake.org/download/

如果操作系统是64位的就选上面两个,如果操作系统是32位的就选下面两个,选择下载msi格式的,不需要解压,直接安装就行了;选择Zip的是压缩包,需要解压。

 

编译Dlib源码


在Dlib目录下新建一个build文件夹,在build文件夹下,分别新建一个x64和x86文件夹,用于保存64位和32位的编译文件。

 

找到CMake的安装路径,点击运行cmake-gui.exe(参考D:\CMake\bin\cmake-gui.exe),用CMake编译Dlib源码,分别设置Dlib源码目录和build目录,设置完成后点击“Configure”按钮。

点击“Configure” 后,选择对应的编译器版本和“Use default native compilers”,编译器有64位和32位,注意选择,然后点击“finish”。

编译完后,会发现一片红,下面还有报错,并且文件夹内并没有生成想要的东西 

点击“Generate” 按钮,继续生成,会发现一片红没有了,文件夹内也出现想要的东西“dlib.sln”

 

生成lib链接库 

找到“dlib.sln”文件,使用vs打开,选择“生成解决方案”或者“生成dlib”,64位、32位、debug、release分别生成一个。

 

 

配置Dlib 


打开Visual Studio,新建一个C++项目,在Visual Studio左上角菜单栏,依次选择“视图”、“其他窗口”、“属性管理器”。找到自己对应的Debug和Release模式,比如说我目前想使用x64的Debug,我就选择第二项下的“Microsoft.Cpp.x64.user”。右键选择“属性”,进入“Microsoft.Cpp.x64.user的属性页”。最重要的就是添加包含目录、附加库目录、附加依赖项。

1、添加包含目录 ,就是源文件路径

2、添加附加库目录,dlib19.17.0_debug_64bit_msvc1900.lib文件的父目录路径 

3、添加附加依赖项,我们要用的lib 

 

遇到的问题


USER_ERROR__inconsistent_build_configuration__see_dlib_faq_1 

USER_ERROR__inconsistent_build_configuration__see_dlib_faq_2

 解决方法:

使用build下的config.h文件替换掉源码中的config.h文件。

2、添加图片支持

 

 

测试代码


实现功能:读取一张图片,检测人脸个数并框出人脸 ,根据官方代码修改的

#include <dlib/image_processing/frontal_face_detector.h>
#include <dlib/gui_widgets.h>
#include <dlib/image_io.h>
#include <iostream>

using namespace dlib;
using namespace std;

int main()
{
	frontal_face_detector detector = get_frontal_face_detector();
	image_window win;
	array2d<unsigned char> img;
	load_image(img, "1.jpg");
	//pyramid_up(img);
	std::vector<rectangle> dets = detector(img);
	cout << "检测到的人脸数 :" << dets.size() << endl;
	win.clear_overlay();
	win.set_image(img);
	win.add_overlay(dets, rgb_pixel(255, 0, 0));
	//输入退出
	//cout << "Hit enter to process the next image..." << endl;
	//cin.get();
	system("pause");
	return 0;
}

 

展开阅读全文

没有更多推荐了,返回首页