TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

dlibをWindowsにインストールする(補足)

前の日記で、WindowsのAnacondaでインストールしたPythonにdlibをインストールする方法を記載したが、jpegライブラリが有効になっていないため、サンプルが実行できなかった。

解決方法が見つかったので、その方法を記す。

Bash on Windowsでは、dlib公式のページの説明通りにビルドできるが、Windowsでインストールする場合は、なぜかjpegライブラリが有効にならない。
サンプルを実行すると以下のメッセージが表示される。

dlib-19.1\python_examples>python train_object_detector.py ../examples/faces
Traceback (most recent call last):
  File "train_object_detector.py", line 85, in <module>
    dlib.train_simple_object_detector(training_xml_path, "detector.svm", options)
RuntimeError: Unable to load image in file 2007_007763.jpg.
You must #define DLIB_JPEG_SUPPORT and link to libjpeg to read JPEG files.
Do this by following the instructions at http://dlib.net/compile.html.

Note that you must cause DLIB_JPEG_SUPPORT to be defined for your entire project.
So don't #define it in one file. Instead, add it to the C/C++->Preprocessor->Preprocessor Definitions
field in Visual Studio's Property Pages window so it takes effect for your entire application.

setup.pyを使用してインストールすると、ビルドオプションは自動で設定されるので、エラーメッセージに記載されているDLIB_JPEG_SUPPORTをプロジェクトの設定に追加することができない。(setup.pyのコメントに記載されている --yes DLIB_JPEG_SUPPORTオプションも効果がなかった。)
そこで、ソースを修正して、#defineディレクティブを追加する。

「dlib\image_loader\jpeg_loader.h」の6行目に以下の内容を追加する。

#ifndef DLIB_JPEG_SUPPORT
#define DLIB_JPEG_SUPPORT
#endif

ソース修正後、前回の説明の通り、

python setup.py install

でインストールできる。

インストール済みの場合は、

pip uninstall dlib

でインストール前にアンインストールしておく。

これで、サンプルをWindows上で実行できるようになる。


imglabツールのビルドも同様にソース修正が必要になる。
「dlib\image_saver\save_png.h」の6行目に以下の内容を追加する。

#ifndef DLIB_PNG_SUPPORT
#define DLIB_PNG_SUPPORT
#endif

64bitでビルドするには、cmakeでビルドする際に、オプションでコンパイラを指定する必要がある。
README.txtの手順の「cmake ..」の個所を以下の通りとする。

cmake -G "Visual Studio 14 2015 Win64" ..

ビルドが完了すると、Release\imaglab.exeができるので、PATHのあるディレクトリにコピーするか、実行する際にsetコマンドでPATHに追加する。