如何用dlib实现dlib 人脸检测 python

这篇主要是编译和安装,最终目的是编译出dilb.lib,这样就可以将该静态库添加到我们自己的工程,供我们使用。&
步骤一:下载Dlib库&
下载链接:&
可以看到网站上还提供了了C++与的例程。&
步骤二:用CMake制作dilb.lib&
配置好路径后,点击1,会提示你选择编译器,按照你的需求选择就可以。前提是你的电脑必须安装,比如你想编译VS2013X64,你必须安装VS2013.然后点击2.等待即可。&
如果你以为这样就OK,那就错了,以上只是将Dlib转换成了一个VS工程,我们还需要打开VS,生成这个工程。&
步骤三:生成dlib.lib&
打开F:/dlibbuild2013x64(这是我的保存路劲,请换成你自己的),找到Project.sln,打开后&
根据你的需要选择Debug或Release,win32或X64&
右击ALL_BUILD-&重新生成。等待编译好后在F:/dlibbuild2013x64 里多出两个两个文件夹Debug和x64,dlib.lib在Debug文件夹里。导入自己的工程就OK了!&
详细步骤可参考:
Dlib库的人脸检测算法使用的hog特征与级联分类器。废话少说,下面开始。&
步骤一:建立工程,配置工程。&
建立工程就不多说了,不用预编译头,建立一个空项目就可以。下面主要说配置。&
(3)就是把上一篇博客中生成的dlib.lib导入工程中&
在此我使用的dlib库提供的例子,我只是增加了中文注释
&code class=&hljs fsharp has-numbering& style=&display: padding: 0 color: box-sizing: border- font-family: 'Source Code Pro',font-size: white-space: border-radius: 0 word-wrap: background:&&&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&// The contents of this file are in the public domain. See LICENSE_FOR_EXAMPLE_PROGRAMS.txt&/span&
This example program shows how &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&to&/span& find frontal human faces &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&in&/span& an image.
particular, this program shows how you can take a list &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&of&/span& images from the
command line &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&and&/span& display each on the screen &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&with&/span& red boxes overlaid on each
human face.
检测正脸,可检测一系列的图片上的人脸并用红色方框表示
The examples/faces folder contains some jpg images &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&of&/span& people.
You can run
this program on them &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&and&/span& see the detections by executing the following command:
./face_detection_ex faces/*.jpg
可以使用此命令运行该程序
This face detector is made using the now classic Histogram &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&of&/span& Oriented
Gradients (HOG) feature combined &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&with&/span& a linear classifier, an image pyramid,
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&and&/span& sliding window detection scheme.
This &span class=&hljs-class& style=&box-sizing: border-&&&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&type&/span& &span class=&hljs-title& style=&box-sizing: border- color: rgb(102, 0, 102);&&of&/span& &span class=&hljs-title& style=&box-sizing: border- color: rgb(102, 0, 102);&&object&/span& &span class=&hljs-title& style=&box-sizing: border- color: rgb(102, 0, 102);&&detector&/span& &span class=&hljs-title& style=&box-sizing: border- color: rgb(102, 0, 102);&&is&/span& &span class=&hljs-title& style=&box-sizing: border- color: rgb(102, 0, 102);&&fairly&/span&&/span&
general &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&and&/span& capable &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&of&/span& detecting many types &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&of&/span& semi-rigid objects &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&in&/span&
addition &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&to&/span& human faces.
Therefore, &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&if&/span& you are interested &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&in&/span& making your
own object detectors &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&then&/span& read the fhog_object_detector_ex.cpp example
It shows how &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&to&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&use&/span& the machine learning tools which were used &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&to&/span&
create dlib's face detector.
Finally, note that the face detector is fastest &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&when&/span& compiled &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&with&/span& at least
SSE2 instructions enabled.
So &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&if&/span& you are using a PC &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&with&/span& an Intel &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&or&/span& AMD
chip &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&then&/span& you should enable at least SSE2 instructions.
If you are using
cmake &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&to&/span& compile this program you can enable them by using one &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&of&/span& the
following commands &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&when&/span& you create the build project:
cmake path_to_dlib_root/examples -DUSE_SSE2_INSTRUCTIONS=ON
cmake path_to_dlib_root/examples -DUSE_SSE4_INSTRUCTIONS=ON
cmake path_to_dlib_root/examples -DUSE_AVX_INSTRUCTIONS=ON
This will set the appropriate compiler options &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&for&/span& GCC, clang, Visual
Studio, &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&or&/span& the Intel compiler.
If you are using another compiler &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&then&/span& you
need &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&to&/span& consult your compiler's manual &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&to&/span& determine how &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&to&/span& enable these
instructions.
Note that AVX is the fastest but requires a CPU from at least
&span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&2011.&/span&
SSE4 is the next fastest &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&and&/span& is supported by most current machines.
#include &dlib/image_processing/frontal_face_detector.h&
#include &dlib/gui_widgets.h&
#include &dlib/image_io.h&
#include &iostream&
using &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&namespace&/span&
using &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&namespace&/span&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&// ----------------------------------------------------------------------------------------&/span&
int main(int argc, char** argv)
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&try&/span&
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&if&/span& (argc == &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&1&/span&)
cout && &span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&Give some image files as arguments to this program.&&/span& &&
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&return&/span& &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&0&/span&;
frontal_face_detector detector = get_frontal_face_detector();&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&//定义一个frontal_face_detctor类的实例detector,用get_frontal_face_detector函数初始化该实例&/span&
image_&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&//一个显示窗口&/span&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&// Loop over all the images provided on the command line.&/span&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&// 循环所有的图片&/span&
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&for&/span& (int i = &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&1&/span&; i & ++i)
cout && &span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&processing image &&/span& && argv[i] &&
array2d&unsigned char&
load_image(img, argv[i]);&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&// 加载一张图片,从argv[i](图片路劲)加载到变量img&/span&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&// Make the image bigger by a factor of two.
This is useful since&/span&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&// the face detector looks for faces that are about 80 by 80 pixels&/span&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&// or larger.
Therefore, if you want to find faces that are smaller&/span&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&// than that then you need to upsample the image as we do here by&/span&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&// calling pyramid_up().
So this will allow it to detect faces that&/span&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&// are at least 40 by 40 pixels in size.
We could call pyramid_up()&/span&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&// again to find even smaller faces, but note that every time we&/span&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&// upsample the image we make the detector run slower since it must&/span&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&// process a larger image.&/span&
/*确保检测图片是检测器的两倍。这第一点是十分有用的,因为脸部检测器搜寻的人脸大小是&span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&80&/span&*&span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&80&/span&或者更大。
因此,如果你想找到比&span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&80&/span&*&span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&80&/span&小的人脸,需要将检测图片进行上采样,我们可以调用pyramid_up()函数。
执行一次pyramid_up()我们能检测&span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&40&/span&*&span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&40&/span&大小的了,如果我们想检测更小的人脸,那还需要再次执行pyramid_up()函数。
注意,上采样后,速度会减慢!*/
pyramid_up(img);&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&//对图像进行上采用,检测更小的人脸&/span&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&// Now tell the face detector to give us a list of bounding boxes&/span&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&// around all the faces it can find in the image.&/span&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&//开始检测,返回一系列的边界框&/span&
std::vector&rectangle& dets = detector(img);&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&//detector()函数检测人脸,返回一系列边界盒子&/span&
cout && &span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&Number of faces detected: &&/span& && dets.size() &&&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&//dets.size 人脸数量&/span&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&// Now we show the image on the screen and the face detections as&/span&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&// red overlay boxes.&/span&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&// 在原图片上显示结果&/span&
win.clear_overlay();
win.set_image(img);
win.add_overlay(dets, rgb_pixel(&span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&255&/span&, &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&0&/span&, &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&0&/span&));
cout && &span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&Hit enter to process the next image...&&/span& &&
cin.get();
catch (&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&exception&/span&& e)
cout && &span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&\nexception thrown!&&/span& &&
cout && e.what() &&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&// ----------------------------------------------------------------------------------------&/span&
&/code&&ul class=&pre-numbering& style=&box-sizing: border- position: width: 50 top: 0 left: 0 margin: 0 padding: 6px 0px 40 border-right-width: 1 border-right-style: border-right-color: rgb(221, 221, 221); list-style: text-align: background-color: rgb(238, 238, 238);&&&li style=&box-sizing: border- padding: 0px 5&&1&/li&&li style=&box-sizing: border- padding: 0px 5&&2&/li&&li style=&box-sizing: border- padding: 0px 5&&3&/li&&li style=&box-sizing: border- padding: 0px 5&&4&/li&&li style=&box-sizing: border- padding: 0px 5&&5&/li&&li style=&box-sizing: border- padding: 0px 5&&6&/li&&li style=&box-sizing: border- padding: 0px 5&&7&/li&&li style=&box-sizing: border- padding: 0px 5&&8&/li&&li style=&box-sizing: border- padding: 0px 5&&9&/li&&li style=&box-sizing: border- padding: 0px 5&&10&/li&&li style=&box-sizing: border- padding: 0px 5&&11&/li&&li style=&box-sizing: border- padding: 0px 5&&12&/li&&li style=&box-sizing: border- padding: 0px 5&&13&/li&&li style=&box-sizing: border- padding: 0px 5&&14&/li&&li style=&box-sizing: border- padding: 0px 5&&15&/li&&li style=&box-sizing: border- padding: 0px 5&&16&/li&&li style=&box-sizing: border- padding: 0px 5&&17&/li&&li style=&box-sizing: border- padding: 0px 5&&18&/li&&li style=&box-sizing: border- padding: 0px 5&&19&/li&&li style=&box-sizing: border- padding: 0px 5&&20&/li&&li style=&box-sizing: border- padding: 0px 5&&21&/li&&li style=&box-sizing: border- padding: 0px 5&&22&/li&&li style=&box-sizing: border- padding: 0px 5&&23&/li&&li style=&box-sizing: border- padding: 0px 5&&24&/li&&li style=&box-sizing: border- padding: 0px 5&&25&/li&&li style=&box-sizing: border- padding: 0px 5&&26&/li&&li style=&box-sizing: border- padding: 0px 5&&27&/li&&li style=&box-sizing: border- padding: 0px 5&&28&/li&&li style=&box-sizing: border- padding: 0px 5&&29&/li&&li style=&box-sizing: border- padding: 0px 5&&30&/li&&li style=&box-sizing: border- padding: 0px 5&&31&/li&&li style=&box-sizing: border- padding: 0px 5&&32&/li&&li style=&box-sizing: border- padding: 0px 5&&33&/li&&li style=&box-sizing: border- padding: 0px 5&&34&/li&&li style=&box-sizing: border- padding: 0px 5&&35&/li&&li style=&box-sizing: border- padding: 0px 5&&36&/li&&li style=&box-sizing: border- padding: 0px 5&&37&/li&&li style=&box-sizing: border- padding: 0px 5&&38&/li&&li style=&box-sizing: border- padding: 0px 5&&39&/li&&li style=&box-sizing: border- padding: 0px 5&&40&/li&&li style=&box-sizing: border- padding: 0px 5&&41&/li&&li style=&box-sizing: border- padding: 0px 5&&42&/li&&li style=&box-sizing: border- padding: 0px 5&&43&/li&&li style=&box-sizing: border- padding: 0px 5&&44&/li&&li style=&box-sizing: border- padding: 0px 5&&45&/li&&li style=&box-sizing: border- padding: 0px 5&&46&/li&&li style=&box-sizing: border- padding: 0px 5&&47&/li&&li style=&box-sizing: border- padding: 0px 5&&48&/li&&li style=&box-sizing: border- padding: 0px 5&&49&/li&&li style=&box-sizing: border- padding: 0px 5&&50&/li&&li style=&box-sizing: border- padding: 0px 5&&51&/li&&li style=&box-sizing: border- padding: 0px 5&&52&/li&&li style=&box-sizing: border- padding: 0px 5&&53&/li&&li style=&box-sizing: border- padding: 0px 5&&54&/li&&li style=&box-sizing: border- padding: 0px 5&&55&/li&&li style=&box-sizing: border- padding: 0px 5&&56&/li&&li style=&box-sizing: border- padding: 0px 5&&57&/li&&li style=&box-sizing: border- padding: 0px 5&&58&/li&&li style=&box-sizing: border- padding: 0px 5&&59&/li&&li style=&box-sizing: border- padding: 0px 5&&60&/li&&li style=&box-sizing: border- padding: 0px 5&&61&/li&&li style=&box-sizing: border- padding: 0px 5&&62&/li&&li style=&box-sizing: border- padding: 0px 5&&63&/li&&li style=&box-sizing: border- padding: 0px 5&&64&/li&&li style=&box-sizing: border- padding: 0px 5&&65&/li&&li style=&box-sizing: border- padding: 0px 5&&66&/li&&li style=&box-sizing: border- padding: 0px 5&&67&/li&&li style=&box-sizing: border- padding: 0px 5&&68&/li&&li style=&box-sizing: border- padding: 0px 5&&69&/li&&li style=&box-sizing: border- padding: 0px 5&&70&/li&&li style=&box-sizing: border- padding: 0px 5&&71&/li&&li style=&box-sizing: border- padding: 0px 5&&72&/li&&li style=&box-sizing: border- padding: 0px 5&&73&/li&&li style=&box-sizing: border- padding: 0px 5&&74&/li&&li style=&box-sizing: border- padding: 0px 5&&75&/li&&li style=&box-sizing: border- padding: 0px 5&&76&/li&&li style=&box-sizing: border- padding: 0px 5&&77&/li&&li style=&box-sizing: border- padding: 0px 5&&78&/li&&li style=&box-sizing: border- padding: 0px 5&&79&/li&&li style=&box-sizing: border- padding: 0px 5&&80&/li&&li style=&box-sizing: border- padding: 0px 5&&81&/li&&li style=&box-sizing: border- padding: 0px 5&&82&/li&&li style=&box-sizing: border- padding: 0px 5&&83&/li&&li style=&box-sizing: border- padding: 0px 5&&84&/li&&li style=&box-sizing: border- padding: 0px 5&&85&/li&&li style=&box-sizing: border- padding: 0px 5&&86&/li&&li style=&box-sizing: border- padding: 0px 5&&87&/li&&li style=&box-sizing: border- padding: 0px 5&&88&/li&&li style=&box-sizing: border- padding: 0px 5&&89&/li&&li style=&box-sizing: border- padding: 0px 5&&90&/li&&li style=&box-sizing: border- padding: 0px 5&&91&/li&&li style=&box-sizing: border- padding: 0px 5&&92&/li&&li style=&box-sizing: border- padding: 0px 5&&93&/li&&li style=&box-sizing: border- padding: 0px 5&&94&/li&&li style=&box-sizing: border- padding: 0px 5&&95&/li&&li style=&box-sizing: border- padding: 0px 5&&96&/li&&li style=&box-sizing: border- padding: 0px 5&&97&/li&&li style=&box-sizing: border- padding: 0px 5&&98&/li&&li style=&box-sizing: border- padding: 0px 5&&99&/li&&li style=&box-sizing: border- padding: 0px 5&&100&/li&&li style=&box-sizing: border- padding: 0px 5&&101&/li&&li style=&box-sizing: border- padding: 0px 5&&102&/li&&li style=&box-sizing: border- padding: 0px 5&&103&/li&&li style=&box-sizing: border- padding: 0px 5&&104&/li&&li style=&box-sizing: border- padding: 0px 5&&105&/li&&li style=&box-sizing: border- padding: 0px 5&&106&/li&&li style=&box-sizing: border- padding: 0px 5&&107&/li&&li style=&box-sizing: border- padding: 0px 5&&108&/li&&li style=&box-sizing: border- padding: 0px 5&&109&/li&&li style=&box-sizing: border- padding: 0px 5&&110&/li&&li style=&box-sizing: border- padding: 0px 5&&111&/li&&li style=&box-sizing: border- padding: 0px 5&&112&/li&&/ul&&ul class=&pre-numbering& style=&box-sizing: border- position: width: 50 top: 0 left: 0 margin: 0 padding: 6px 0px 40 border-right-width: 1 border-right-style: border-right-color: rgb(221, 221, 221); list-style: text-align: background-color: rgb(238, 238, 238);&&&li style=&box-sizing: border- padding: 0px 5&&1&/li&&li style=&box-sizing: border- padding: 0px 5&&2&/li&&li style=&box-sizing: border- padding: 0px 5&&3&/li&&li style=&box-sizing: border- padding: 0px 5&&4&/li&&li style=&box-sizing: border- padding: 0px 5&&5&/li&&li style=&box-sizing: border- padding: 0px 5&&6&/li&&li style=&box-sizing: border- padding: 0px 5&&7&/li&&li style=&box-sizing: border- padding: 0px 5&&8&/li&&li style=&box-sizing: border- padding: 0px 5&&9&/li&&li style=&box-sizing: border- padding: 0px 5&&10&/li&&li style=&box-sizing: border- padding: 0px 5&&11&/li&&li style=&box-sizing: border- padding: 0px 5&&12&/li&&li style=&box-sizing: border- padding: 0px 5&&13&/li&&li style=&box-sizing: border- padding: 0px 5&&14&/li&&li style=&box-sizing: border- padding: 0px 5&&15&/li&&li style=&box-sizing: border- padding: 0px 5&&16&/li&&li style=&box-sizing: border- padding: 0px 5&&17&/li&&li style=&box-sizing: border- padding: 0px 5&&18&/li&&li style=&box-sizing: border- padding: 0px 5&&19&/li&&li style=&box-sizing: border- padding: 0px 5&&20&/li&&li style=&box-sizing: border- padding: 0px 5&&21&/li&&li style=&box-sizing: border- padding: 0px 5&&22&/li&&li style=&box-sizing: border- padding: 0px 5&&23&/li&&li style=&box-sizing: border- padding: 0px 5&&24&/li&&li style=&box-sizing: border- padding: 0px 5&&25&/li&&li style=&box-sizing: border- padding: 0px 5&&26&/li&&li style=&box-sizing: border- padding: 0px 5&&27&/li&&li style=&box-sizing: border- padding: 0px 5&&28&/li&&li style=&box-sizing: border- padding: 0px 5&&29&/li&&li style=&box-sizing: border- padding: 0px 5&&30&/li&&li style=&box-sizing: border- padding: 0px 5&&31&/li&&li style=&box-sizing: border- padding: 0px 5&&32&/li&&li style=&box-sizing: border- padding: 0px 5&&33&/li&&li style=&box-sizing: border- padding: 0px 5&&34&/li&&li style=&box-sizing: border- padding: 0px 5&&35&/li&&li style=&box-sizing: border- padding: 0px 5&&36&/li&&li style=&box-sizing: border- padding: 0px 5&&37&/li&&li style=&box-sizing: border- padding: 0px 5&&38&/li&&li style=&box-sizing: border- padding: 0px 5&&39&/li&&li style=&box-sizing: border- padding: 0px 5&&40&/li&&li style=&box-sizing: border- padding: 0px 5&&41&/li&&li style=&box-sizing: border- padding: 0px 5&&42&/li&&li style=&box-sizing: border- padding: 0px 5&&43&/li&&li style=&box-sizing: border- padding: 0px 5&&44&/li&&li style=&box-sizing: border- padding: 0px 5&&45&/li&&li style=&box-sizing: border- padding: 0px 5&&46&/li&&li style=&box-sizing: border- padding: 0px 5&&47&/li&&li style=&box-sizing: border- padding: 0px 5&&48&/li&&li style=&box-sizing: border- padding: 0px 5&&49&/li&&li style=&box-sizing: border- padding: 0px 5&&50&/li&&li style=&box-sizing: border- padding: 0px 5&&51&/li&&li style=&box-sizing: border- padding: 0px 5&&52&/li&&li style=&box-sizing: border- padding: 0px 5&&53&/li&&li style=&box-sizing: border- padding: 0px 5&&54&/li&&li style=&box-sizing: border- padding: 0px 5&&55&/li&&li style=&box-sizing: border- padding: 0px 5&&56&/li&&li style=&box-sizing: border- padding: 0px 5&&57&/li&&li style=&box-sizing: border- padding: 0px 5&&58&/li&&li style=&box-sizing: border- padding: 0px 5&&59&/li&&li style=&box-sizing: border- padding: 0px 5&&60&/li&&li style=&box-sizing: border- padding: 0px 5&&61&/li&&li style=&box-sizing: border- padding: 0px 5&&62&/li&&li style=&box-sizing: border- padding: 0px 5&&63&/li&&li style=&box-sizing: border- padding: 0px 5&&64&/li&&li style=&box-sizing: border- padding: 0px 5&&65&/li&&li style=&box-sizing: border- padding: 0px 5&&66&/li&&li style=&box-sizing: border- padding: 0px 5&&67&/li&&li style=&box-sizing: border- padding: 0px 5&&68&/li&&li style=&box-sizing: border- padding: 0px 5&&69&/li&&li style=&box-sizing: border- padding: 0px 5&&70&/li&&li style=&box-sizing: border- padding: 0px 5&&71&/li&&li style=&box-sizing: border- padding: 0px 5&&72&/li&&li style=&box-sizing: border- padding: 0px 5&&73&/li&&li style=&box-sizing: border- padding: 0px 5&&74&/li&&li style=&box-sizing: border- padding: 0px 5&&75&/li&&li style=&box-sizing: border- padding: 0px 5&&76&/li&&li style=&box-sizing: border- padding: 0px 5&&77&/li&&li style=&box-sizing: border- padding: 0px 5&&78&/li&&li style=&box-sizing: border- padding: 0px 5&&79&/li&&li style=&box-sizing: border- padding: 0px 5&&80&/li&&li style=&box-sizing: border- padding: 0px 5&&81&/li&&li style=&box-sizing: border- padding: 0px 5&&82&/li&&li style=&box-sizing: border- padding: 0px 5&&83&/li&&li style=&box-sizing: border- padding: 0px 5&&84&/li&&li style=&box-sizing: border- padding: 0px 5&&85&/li&&li style=&box-sizing: border- padding: 0px 5&&86&/li&&li style=&box-sizing: border- padding: 0px 5&&87&/li&&li style=&box-sizing: border- padding: 0px 5&&88&/li&&li style=&box-sizing: border- padding: 0px 5&&89&/li&&li style=&box-sizing: border- padding: 0px 5&&90&/li&&li style=&box-sizing: border- padding: 0px 5&&91&/li&&li style=&box-sizing: border- padding: 0px 5&&92&/li&&li style=&box-sizing: border- padding: 0px 5&&93&/li&&li style=&box-sizing: border- padding: 0px 5&&94&/li&&li style=&box-sizing: border- padding: 0px 5&&95&/li&&li style=&box-sizing: border- padding: 0px 5&&96&/li&&li style=&box-sizing: border- padding: 0px 5&&97&/li&&li style=&box-sizing: border- padding: 0px 5&&98&/li&&li style=&box-sizing: border- padding: 0px 5&&99&/li&&li style=&box-sizing: border- padding: 0px 5&&100&/li&&li style=&box-sizing: border- padding: 0px 5&&101&/li&&li style=&box-sizing: border- padding: 0px 5&&102&/li&&li style=&box-sizing: border- padding: 0px 5&&103&/li&&li style=&box-sizing: border- padding: 0px 5&&104&/li&&li style=&box-sizing: border- padding: 0px 5&&105&/li&&li style=&box-sizing: border- padding: 0px 5&&106&/li&&li style=&box-sizing: border- padding: 0px 5&&107&/li&&li style=&box-sizing: border- padding: 0px 5&&108&/li&&li style=&box-sizing: border- padding: 0px 5&&109&/li&&li style=&box-sizing: border- padding: 0px 5&&110&/li&&li style=&box-sizing: border- padding: 0px 5&&111&/li&&li style=&box-sizing: border- padding: 0px 5&&112&/li&&/ul&
(2)这个代码是带参主函数,我们可以编译完后用命令行的形式运行。如果你不想那么麻烦,我们可以在属性里设置命令参数&
做完这一切,编译运行就可以了。
注意!!!&
如果有如下报错1&dlib.lib(base_widgets.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”(dlib_face.obj 中)&
1&dlib.lib(base_widgets.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MD_DynamicRelease”(dlib_face.obj 中)&
原因是,你生成的dlib.lib是debug版本,而你的工程建立的是release版本,所有会有这个包括,只要将两者保持一致,就没有在这个报错了!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:884次
排名:千里之外
(5)(2)(1)(1)

我要回帖

更多关于 dlib 人脸检测 训练 的文章

 

随机推荐