Dlib --- 環境準備
SVMやDeep Learning等、よく聞くアルゴリズムのものは一通り準備されています。
ドキュメントやサンプルが整っているのが一番嬉しい点だと思います。
ビルドせずに利用
一般的にはCMakeを利用してlibファイルを作成し、それをリンクして利用します。
他の方法として、cppをそのままプロジェクトに追加して利用することも可能です。
ビルド自体は10秒程度で終わりますので、libのVC++のバージョン管理が面倒な場合はcpp追加で利用するのもいいと思います。
今回はcppを利用する方法で進めていきます。
プロジェクトの準備
VC++のWin32コンソールプロジェクトを想定しています。
ソースに、既存のファイルの追加で、dlib解凍先/dlib/all/source.cpp を追加します。
プリコンパイルのエラー回避のため、source.cppの先頭に #include "stdafx.h" を追加します。
また今回はGUIを利用しないため、#define DLIB_NO_GUI_SUPPORT も追加しておきます。
#include "stdafx.h" #define DLIB_NO_GUI_SUPPORT // Copyright (C) 2006 Davis E. King (davis@dlib.net) // License: Boost Software License See LICENSE.txt for the full license. #ifndef DLIB_ALL_SOURCe_ #define DLIB_ALL_SOURCe_ ...
最後にinclude参照先として、dlib解凍先を指定します。
アプリケーションコード
今回はdlibのサンプル画像で顔認識をしてみます。
frontal_face_detectorを利用して、顔のrectangleを取得しています。
今回はdlibのjpeg読み込みをONにしていないため、bmpに変換して読み込んでいます。
source.cppに #define DLIB_JPEG_SUPPORT を追加して、さらに dlib解凍先/dlib/external/libjpeg の全cppファイルをプロジェクトに追加すればjpegを読み込めるようになりますが、ここまでくればCMakeでlibを作成する方が楽だと思います。
#include "stdafx.h" #include "dlib\image_processing\frontal_face_detector.h" #include "dlib\image_io.h" int main() { dlib::array2d<dlib::rgb_pixel> image; dlib::load_bmp(image, "C:\\lib\\dlib-19.4\\examples\\faces\\2008_001322.bmp"); auto detector = dlib::get_frontal_face_detector(); auto rectangles = detector(image); for (auto& rect : rectangles) dlib::draw_rectangle(image, rect, dlib::rgb_pixel(255, 0, 0), 3); dlib::save_bmp(image, "output.bmp"); return 0; }