⚠️️ Attention: This library is currently not maintained. Please use the gazr fork instead. ⚠️️
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
Dlibsomewhere. 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
CMakeworkflow:
$ mkdir build && cd build $ cmake -DDLIB_PATH= .. $ make
Note that the first time you compile the project,
dlibwill 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