1. 程式人生 > >Dlib機器學習庫編譯以及安裝

Dlib機器學習庫編譯以及安裝

這篇主要是編譯和安裝,最終目的是編譯出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庫的人臉檢測演算法使用的hog特徵與級聯分類器。廢話少說,下面開始。 
步驟一:建立工程,配置工程。 
建立工程就不多說了,不用預編譯頭,建立一個空專案就可以。下面主要說配置。 
(1)屬性->VC++目錄
(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版本,所有會有這個包括,只要將兩者保持一致,就沒有在這個報錯了!