前の日記で、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に追加する。