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了! 

详细步骤可参考:http://jingyan.baidu.com/article/48b37f8d0461831a6464889c.html


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版本,所有会有这个包括,只要将两者保持一致,就没有在这个报错了!


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dlib 是一个 C++ ,提供了各种机器学习和计算机视觉算法的实现,比如图像分类、物体检测、人脸识别等。本文主要介绍如何编译 Dlib 19.10。 步骤如下: 1. 下载 Dlib 源代码 首先,需要去官网(http://dlib.net/)下载 Dlib 19.10 的源代码,可以选择下载压缩包或使用 Git 克隆。 2. 解压源代码 将下载的压缩包解压缩到一个合适的目录中,例如:“D:\dlib-19.10”。 3. 编译源代码 Dlib 提供了 CMake 作为编译工具,可以在命令行或者 CMake-GUI 中使用。 在命令行中编译可以使用以下命令: ``` cd D:\dlib-19.10 mkdir build cd build cmake .. cmake --build . --config Release ``` 上述步骤中,`..` 表示使用上级目录中的 CMakeLists.txt 文件作为编译脚本。cmake 命令需要确保已经安装,详情可查看相关文档。 命令执行完毕后,会在“D:\dlib-19.10\build\”目录下生成 `dlib.lib` 和 `dlib.dll` 文件,供开发者使用。 如果使用 CMake-GUI,则需要打开该工具后: 1. 在“Where is the source code”中指定 Dlib 源代码所在的目录; 2. 在“Where to build the binaries”中指定编译输出的目录; 3. 点击 Configure 按钮,根据需要选择编译选项,并点击 Generate 按钮; 4. 在“Where to build the binaries”指定的目录中执行命令:`cmake --build . --config Release`。 通过上述步骤,我们成功编译Dlib 19.10 。可以将编译生成的 `.lib` 和 `.dll` 文件导入到自己的开发环境中,继续使用 Dlib 提供的强大功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值