这篇主要是编译和安装,最终目的是编译出dilb.lib,这样就可以将该静态库添加到我们自己的工程,供我们使用。
步骤一:下载Dlib库
下载链接: http://dlib.net/
可以看到网站上还提供了了C++与 Python 的例程。
步骤二:用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库
下载链接: http://dlib.net/
可以看到网站上还提供了了C++与 Python 的例程。
步骤二:用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了!
详细步骤可参考:http://jingyan.baidu.com/article/48b37f8d0461831a6464889c.html
Dlib库的人脸检测算法使用的hog特征与级联分类器。废话少说,下面开始。
步骤一:建立工程,配置工程。
建立工程就不多说了,不用预编译头,建立一个空项目就可以。下面主要说配置。
(1)
(2)
(3)就是把上一篇博客中生成的dlib.lib导入工程中
在此我使用的dlib库提供的例子,我只是增加了中文注释
<code class="hljs fsharp has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 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-box;">to</span> find frontal human faces <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> an image. In particular, this program shows how you can take a list <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> images from the command line <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">and</span> display each on the screen <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">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-box;">of</span> people. You can run this program on them <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">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-box;">of</span> Oriented Gradients (HOG) feature combined <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">with</span> a linear classifier, an image pyramid, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">and</span> sliding window detection scheme. This <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">type</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">of</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">object</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">detector</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">is</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">fairly</span></span> general <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">and</span> capable <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> detecting many types <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> semi-rigid objects <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> addition <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">to</span> human faces. Therefore, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> you are interested <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> making your own object detectors <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span> read the fhog_object_detector_ex.cpp example program. It shows how <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">to</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">use</span> the machine learning tools which were used <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">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-box;">when</span> compiled <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">with</span> at least SSE2 instructions enabled. So <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> you are using a PC <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">with</span> an Intel <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">or</span> AMD chip <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">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-box;">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-box;">of</span> the following commands <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">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-box;">for</span> GCC, clang, Visual Studio, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">or</span> the Intel compiler. If you are using another compiler <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">then</span> you need <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">to</span> consult your compiler's manual <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">to</span> determine how <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">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-box;">2011.</span> SSE4 is the next fastest <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">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-box;">namespace</span> dlib; using <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">namespace</span> std; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// ----------------------------------------------------------------------------------------</span> int main(int argc, char** argv) { <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">try</span> { <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (argc == <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>) { cout << <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Give some image files as arguments to this program."</span> << endl; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>; } frontal_face_detector detector = get_frontal_face_detector();<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//定义一个frontal_face_detctor类的实例detector,用get_frontal_face_detector函数初始化该实例</span> image_window win;<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//一个显示窗口</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// Loop over all the images provided on the command line.</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 循环所有的图片</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> (int i = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>; i < argc; ++i) { cout << <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"processing image "</span> << argv[i] << endl; array2d<unsigned char> img; load_image(img, argv[i]);<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 加载一张图片,从argv[i](图片路劲)加载到变量img</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 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-box;">// 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-box;">// 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-box;">// 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-box;">// 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-box;">// 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-box;">// 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-box;">// 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-box;">// process a larger image.</span> /*确保检测图片是检测器的两倍。这第一点是十分有用的,因为脸部检测器搜寻的人脸大小是<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">80</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">80</span>或者更大。 因此,如果你想找到比<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">80</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">80</span>小的人脸,需要将检测图片进行上采样,我们可以调用pyramid_up()函数。 执行一次pyramid_up()我们能检测<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">40</span>*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">40</span>大小的了,如果我们想检测更小的人脸,那还需要再次执行pyramid_up()函数。 注意,上采样后,速度会减慢!*/ pyramid_up(img);<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//对图像进行上采用,检测更小的人脸</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 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-box;">// around all the faces it can find in the image.</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//开始检测,返回一系列的边界框</span> std::vector<rectangle> dets = detector(img);<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//detector()函数检测人脸,返回一系列边界盒子</span> cout << <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Number of faces detected: "</span> << dets.size() << endl;<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//dets.size 人脸数量</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 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-box;">// red overlay boxes.</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 在原图片上显示结果</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-box;">255</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>)); cout << <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Hit enter to process the next image..."</span> << endl; cin.get(); } } catch (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">exception</span>& e) { cout << <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"\nexception thrown!"</span> << endl; cout << e.what() << endl; } } <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// ----------------------------------------------------------------------------------------</span> </code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li><li style="box-sizing: border-box; padding: 0px 5px;">47</li><li style="box-sizing: border-box; padding: 0px 5px;">48</li><li style="box-sizing: border-box; padding: 0px 5px;">49</li><li style="box-sizing: border-box; padding: 0px 5px;">50</li><li style="box-sizing: border-box; padding: 0px 5px;">51</li><li style="box-sizing: border-box; padding: 0px 5px;">52</li><li style="box-sizing: border-box; padding: 0px 5px;">53</li><li style="box-sizing: border-box; padding: 0px 5px;">54</li><li style="box-sizing: border-box; padding: 0px 5px;">55</li><li style="box-sizing: border-box; padding: 0px 5px;">56</li><li style="box-sizing: border-box; padding: 0px 5px;">57</li><li style="box-sizing: border-box; padding: 0px 5px;">58</li><li style="box-sizing: border-box; padding: 0px 5px;">59</li><li style="box-sizing: border-box; padding: 0px 5px;">60</li><li style="box-sizing: border-box; padding: 0px 5px;">61</li><li style="box-sizing: border-box; padding: 0px 5px;">62</li><li style="box-sizing: border-box; padding: 0px 5px;">63</li><li style="box-sizing: border-box; padding: 0px 5px;">64</li><li style="box-sizing: border-box; padding: 0px 5px;">65</li><li style="box-sizing: border-box; padding: 0px 5px;">66</li><li style="box-sizing: border-box; padding: 0px 5px;">67</li><li style="box-sizing: border-box; padding: 0px 5px;">68</li><li style="box-sizing: border-box; padding: 0px 5px;">69</li><li style="box-sizing: border-box; padding: 0px 5px;">70</li><li style="box-sizing: border-box; padding: 0px 5px;">71</li><li style="box-sizing: border-box; padding: 0px 5px;">72</li><li style="box-sizing: border-box; padding: 0px 5px;">73</li><li style="box-sizing: border-box; padding: 0px 5px;">74</li><li style="box-sizing: border-box; padding: 0px 5px;">75</li><li style="box-sizing: border-box; padding: 0px 5px;">76</li><li style="box-sizing: border-box; padding: 0px 5px;">77</li><li style="box-sizing: border-box; padding: 0px 5px;">78</li><li style="box-sizing: border-box; padding: 0px 5px;">79</li><li style="box-sizing: border-box; padding: 0px 5px;">80</li><li style="box-sizing: border-box; padding: 0px 5px;">81</li><li style="box-sizing: border-box; padding: 0px 5px;">82</li><li style="box-sizing: border-box; padding: 0px 5px;">83</li><li style="box-sizing: border-box; padding: 0px 5px;">84</li><li style="box-sizing: border-box; padding: 0px 5px;">85</li><li style="box-sizing: border-box; padding: 0px 5px;">86</li><li style="box-sizing: border-box; padding: 0px 5px;">87</li><li style="box-sizing: border-box; padding: 0px 5px;">88</li><li style="box-sizing: border-box; padding: 0px 5px;">89</li><li style="box-sizing: border-box; padding: 0px 5px;">90</li><li style="box-sizing: border-box; padding: 0px 5px;">91</li><li style="box-sizing: border-box; padding: 0px 5px;">92</li><li style="box-sizing: border-box; padding: 0px 5px;">93</li><li style="box-sizing: border-box; padding: 0px 5px;">94</li><li style="box-sizing: border-box; padding: 0px 5px;">95</li><li style="box-sizing: border-box; padding: 0px 5px;">96</li><li style="box-sizing: border-box; padding: 0px 5px;">97</li><li style="box-sizing: border-box; padding: 0px 5px;">98</li><li style="box-sizing: border-box; padding: 0px 5px;">99</li><li style="box-sizing: border-box; padding: 0px 5px;">100</li><li style="box-sizing: border-box; padding: 0px 5px;">101</li><li style="box-sizing: border-box; padding: 0px 5px;">102</li><li style="box-sizing: border-box; padding: 0px 5px;">103</li><li style="box-sizing: border-box; padding: 0px 5px;">104</li><li style="box-sizing: border-box; padding: 0px 5px;">105</li><li style="box-sizing: border-box; padding: 0px 5px;">106</li><li style="box-sizing: border-box; padding: 0px 5px;">107</li><li style="box-sizing: border-box; padding: 0px 5px;">108</li><li style="box-sizing: border-box; padding: 0px 5px;">109</li><li style="box-sizing: border-box; padding: 0px 5px;">110</li><li style="box-sizing: border-box; padding: 0px 5px;">111</li><li style="box-sizing: border-box; padding: 0px 5px;">112</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li><li style="box-sizing: border-box; padding: 0px 5px;">47</li><li style="box-sizing: border-box; padding: 0px 5px;">48</li><li style="box-sizing: border-box; padding: 0px 5px;">49</li><li style="box-sizing: border-box; padding: 0px 5px;">50</li><li style="box-sizing: border-box; padding: 0px 5px;">51</li><li style="box-sizing: border-box; padding: 0px 5px;">52</li><li style="box-sizing: border-box; padding: 0px 5px;">53</li><li style="box-sizing: border-box; padding: 0px 5px;">54</li><li style="box-sizing: border-box; padding: 0px 5px;">55</li><li style="box-sizing: border-box; padding: 0px 5px;">56</li><li style="box-sizing: border-box; padding: 0px 5px;">57</li><li style="box-sizing: border-box; padding: 0px 5px;">58</li><li style="box-sizing: border-box; padding: 0px 5px;">59</li><li style="box-sizing: border-box; padding: 0px 5px;">60</li><li style="box-sizing: border-box; padding: 0px 5px;">61</li><li style="box-sizing: border-box; padding: 0px 5px;">62</li><li style="box-sizing: border-box; padding: 0px 5px;">63</li><li style="box-sizing: border-box; padding: 0px 5px;">64</li><li style="box-sizing: border-box; padding: 0px 5px;">65</li><li style="box-sizing: border-box; padding: 0px 5px;">66</li><li style="box-sizing: border-box; padding: 0px 5px;">67</li><li style="box-sizing: border-box; padding: 0px 5px;">68</li><li style="box-sizing: border-box; padding: 0px 5px;">69</li><li style="box-sizing: border-box; padding: 0px 5px;">70</li><li style="box-sizing: border-box; padding: 0px 5px;">71</li><li style="box-sizing: border-box; padding: 0px 5px;">72</li><li style="box-sizing: border-box; padding: 0px 5px;">73</li><li style="box-sizing: border-box; padding: 0px 5px;">74</li><li style="box-sizing: border-box; padding: 0px 5px;">75</li><li style="box-sizing: border-box; padding: 0px 5px;">76</li><li style="box-sizing: border-box; padding: 0px 5px;">77</li><li style="box-sizing: border-box; padding: 0px 5px;">78</li><li style="box-sizing: border-box; padding: 0px 5px;">79</li><li style="box-sizing: border-box; padding: 0px 5px;">80</li><li style="box-sizing: border-box; padding: 0px 5px;">81</li><li style="box-sizing: border-box; padding: 0px 5px;">82</li><li style="box-sizing: border-box; padding: 0px 5px;">83</li><li style="box-sizing: border-box; padding: 0px 5px;">84</li><li style="box-sizing: border-box; padding: 0px 5px;">85</li><li style="box-sizing: border-box; padding: 0px 5px;">86</li><li style="box-sizing: border-box; padding: 0px 5px;">87</li><li style="box-sizing: border-box; padding: 0px 5px;">88</li><li style="box-sizing: border-box; padding: 0px 5px;">89</li><li style="box-sizing: border-box; padding: 0px 5px;">90</li><li style="box-sizing: border-box; padding: 0px 5px;">91</li><li style="box-sizing: border-box; padding: 0px 5px;">92</li><li style="box-sizing: border-box; padding: 0px 5px;">93</li><li style="box-sizing: border-box; padding: 0px 5px;">94</li><li style="box-sizing: border-box; padding: 0px 5px;">95</li><li style="box-sizing: border-box; padding: 0px 5px;">96</li><li style="box-sizing: border-box; padding: 0px 5px;">97</li><li style="box-sizing: border-box; padding: 0px 5px;">98</li><li style="box-sizing: border-box; padding: 0px 5px;">99</li><li style="box-sizing: border-box; padding: 0px 5px;">100</li><li style="box-sizing: border-box; padding: 0px 5px;">101</li><li style="box-sizing: border-box; padding: 0px 5px;">102</li><li style="box-sizing: border-box; padding: 0px 5px;">103</li><li style="box-sizing: border-box; padding: 0px 5px;">104</li><li style="box-sizing: border-box; padding: 0px 5px;">105</li><li style="box-sizing: border-box; padding: 0px 5px;">106</li><li style="box-sizing: border-box; padding: 0px 5px;">107</li><li style="box-sizing: border-box; padding: 0px 5px;">108</li><li style="box-sizing: border-box; padding: 0px 5px;">109</li><li style="box-sizing: border-box; padding: 0px 5px;">110</li><li style="box-sizing: border-box; padding: 0px 5px;">111</li><li style="box-sizing: border-box; padding: 0px 5px;">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版本,所有会有这个包括,只要将两者保持一致,就没有在这个报错了!