[dlib]설치

[dlib] 설치

http://dlib.net/

에 들어가서 좌측 하단에 있는 다운로드 버튼을 클릭한다.

http://dlib.net/files/dlib-19.1.zip

다운받은 파일을 압축을 풀어준다.


dlib은 내가 직접 컴파일을 해줘야한다.

따라서 https://cmake.org/download/ 에 들어가서

CMake를 다운받는다.

Binary distributions: 에서 zip 이나 installer 둘중 아무거나 받으면 된다.

어떤 형태던 받고 설치하면 cmake-gui.exe 파일이 생성된다.

이 프로그램을 실행한다.

dlib-19.1 폴더 안에 build-x64 라는 폴더를 하나더 만든다.

where is the source code : dlib-19.1 안의 examples 폴더

where to build the binaries : 아까 만든 build-x64 폴더

그후 Configure 버튼을 누른다.

VS2015 x64를 선택한후 Finish 버튼을 누른다.

그 후 조금 기다리면 빨간창이 뜨는데,

OpenCV_DIR : opencv 가 설치된 디렉토리를 설정해준다. ex) opencv/build

아래의 것들을 체크해준다.

DLIB_JPEG_SUPPORT
DLIG_PNG_SUPPORT
USE_AVX_INSTRUCTIONS
USE_SSE2_INSTRUCTIONS
USE_SSE4_INSTRUCTIONS

빨간색이 없어질때까지 Configure를 클릭하고 Generate를 클릭한다.

Generating done 이 뜨면 완료 된 것이다.

이제 build-x64 -> dlib_build 에 있는 dlib.sln 파일을 연다.

VS2015 가 열리면 빌드 -> 구성관리자 를 열어

ALLBUILD, dlib, ZEROCHECK 를 모드 체크 한후 (DEBUG/Release) 모두 빌드한다.

그럼 Debug, Release 폴더에 dlib.lib 파일이 생겼을 것이다.

이 정적라이브러리를 사용할 프로젝트에 연결해주면 된다.


프로젝트 -> 속성 -> VC++ 디렉터리 -> 라이브러리 디렉터리

Debug/Release 에 맞춰 방금전 만들어진 dlib.lib의 경로를 넣는다.

ex) ../lib/dlib-19.1/build-x64/dlib_build/Debug

그 후,링커 -> 입력 -> 추가 종속성dlib.lib를 추가해준다.

이제 C/C++ -> 일반 -> 추가 포함 디렉터리dlib-19.1 폴더를 추가해준다.

유의할 점은 dlib-19.1/dlib 와 같이 추가하면 에러가 난다.

이유는 에러 메세지에 잘 표기되어 있다.

string.h 같은것들이 표준 라이브러리 string.h와 충돌이 나서

include할때 와 같이 해야 하기 때문.

이제 아래의 예제 소스를 컴파일 해보자.

#include<dlib/gui_widgets.h>
#include<dlib/image_io.h>
#include<dlib/image_transforms.h>
#include<iostream>
#include <fstream>
using namespace std;  
using namespace dlib;

int main(int argc, char* argv[]){  
    array2d<rgb_pixel> img;
    load_image(img, "nayeon.bmp");
    array2d<unsigned char> blurred_img;
    gaussian_blur(img, blurred_img);
    array2d<short> horz_gradient, vert_gradient;
    array2d<unsigned char> edge_image;
    sobel_edge_detector(blurred_img, horz_gradient, vert_gradient);
    suppress_non_maximum_edges(horz_gradient, vert_gradient, edge_image);
    image_window my_window(edge_image, "Normal Edge Image");
    image_window win_hot(heatmap(edge_image));
    image_window win_jet(jet(edge_image));
    image_window my_window2(img, "Original Image");
    point p;
    while (my_window.get_next_double_click(p)){
        cout << "User double clicked on pixel:         " << p << endl;
        cout << "edge pixel value at this location is: " << (int)edge_image[p.y()][p.x()] << endl;
    }
    win_hot.wait_until_closed();
    my_window2.wait_until_closed();
    cout << horz_gradient[0][3] << endl;
    cout << "number of rows in image:    " << horz_gradient.nr() << endl;
    cout << "number of columns in image: " << horz_gradient.nc() << endl;
    return 0;
}

이미지는 아무 bmp 이미지를 사용하면 된다.

결과