This library (libhead_pose_estimation.so
) performs 3D head pose estimation
based on the fantastic dlib face detector and a bit of
OpenCV's
solvePnP magic (it uses adult male anthropometric data to match a real 3D head to the projected image).
The library returns a 4x4 transformation matrix.
It supports detection and tracking of multiple faces at the same time, and runs on-line, but it does not feature face identification.
Note: The library has only been tested on Linux. We can only provide limited support for other operating systems!
Dlib: You need to download and extract Dlib
somewhere. This
application has been tested with dlib-18.16
.
OpenCV: You need to install OpenCV. If you're using Ubuntu, you could run:
sudo apt-get install libopencv-dev
The library uses a standard CMake
workflow:
$ mkdir build && cd build
$ cmake -DDLIB_PATH=<path to dlib> ..
$ make
Note that the first time you compile the project, dlib
will compile as well.
It takes a few minutes. This won't happen the next times.
To test the library, run:
./head_pose_test ../share/shape_predictor_68_face_landmarks.dat
You should get something very similar to the picture above.
Finally, to install the library:
$ make install
The ROS wrapper provides a convenient node that exposes each detected face as a TF frame.
Enable the compilation of the ROS wrapper with:
cmake -DWITH_ROS=ON