openFrameworks
画像処理
OpenCV
顔認識
ofxFaceTraker

目的

DLIB版ofxFaceTraker、ofxFaceTraker2をUbuntu1404で使う方法まとめ。
ofxFaceTrakerをofxFaceTraker2に置き換えることで、トラッキング性能向上が期待できる。

Github ofxFaceTraker2:
https://github.com/HalfdanJ/ofxFaceTracker2

環境

Ubuntu-1404 x64
openFrameworks-0.9.8
OpenCV-3.2
GCC-4.9

openFrameworks、ofxFaceTrakerのインストール

[ofxFaceTrakerをUbuntu1404で使う。]を参照のこと。(http://qiita.com/nnn112358/items/602276937880ce3c1983)

ofxFaceTracker2,他ライブラリをインストールする。

cd of_dev/addons/
git clone https://github.com/HalfdanJ/ofxFaceTracker2.git
git clone https://github.com/dzlonline/ofxBiquadFilter.git

学習器をダウンロードする

学習器(shape_predictor_68_face_landmarks.dat)をダウンロード・解凍する

cd of_dev/addons/
download-model.sh

dlibのインストール

dlibをUbuntuにインストールする。

wget http://dlib.net/files/dlib-19.4.tar.bz2
tar xvf dlib-19.4.tar.bz2
cd dlib-19.4/
mkdir build
cd build
cmake ..
cmake --build . --config Release
sudo make install
sudo ldconfig
cd ..

Install Dlib on Ubuntu

サンプル"example-simple"をコンパイルする

cd of_dev/addons/ofxFaceTracker2/example-simple/
cp ../../../apps/myApps/emptyExample/Makefile .
cp ../../../apps/myApps/emptyExample/config.make .
cp ../../../apps/myApps/emptyExample/emptyExample.qbs .
mkdir bin/data/ -p
cp ../model/shape_predictor_68_face_landmarks ./bin/data/

config.makeの編集

config.makeにdlibを記載する。

PROJECT_LDFLAGS=-Wl,-rpath=./libs
PROJECT_LDFLAGS+= -ldlib

その他のフォルダも同じようにMakefile、config.make、emptyExample.qbs、学習器(shape_predictor_68_face_landmarks)をコピーする。

コンパイル・実行

コンパイル・実行は以下のコマンドで行う。

make
make RunRelease

ofxFaceTraker2に、ofxFaceTrackerのgetImageMesh()関数がない

ofxFaceTracker2のgetImageMesh()関数は、ofxFaceTracker2Instanceクラスの中に実装されている。

ofxFaceTracker2Instance instance = tracker.getInstances()[0];
vector<ofVec2f>  instance.getLandmarks().getImagePoints();
ofxFaceTracker2Instance instance = tracker.getInstances()[0];
vector<ofVec2f>  instance.getLandmarks().getImageMesh();

How to use getImageMesh() from ofxFaceTracker2Landmarks #9

ofxFaceTraker2に、ofxFaceTrackerのgetFound()関数がない

これは実装されていないので、ローカルで編集する。

of_dev/addons/ofxFaceTracker2/src/ofxFaceTracker2.h

class ofxFaceTracker2 : public ofThread {
public:
    bool getFound() const;

of_dev/addons/ofxFaceTracker2/src/ofxFaceTracker2.cpp

bool ofxFaceTracker2::getFound() const {
    return !failed;
}