73 lines
1.7 KiB
C++
73 lines
1.7 KiB
C++
|
#ifndef FACE_DETECTOR_HPP
|
||
|
#define FACE_DETECTOR_HPP
|
||
|
|
||
|
#include <iostream>
|
||
|
#include <vector>
|
||
|
#include <string>
|
||
|
#include <opencv2/opencv.hpp>
|
||
|
|
||
|
#if USE_DLIB
|
||
|
// if we use dlib
|
||
|
#include <dlib/opencv.h>
|
||
|
#include <dlib/image_processing/frontal_face_detector.h>
|
||
|
#include <dlib/image_processing/render_face_detections.h>
|
||
|
#include <dlib/image_processing.h>
|
||
|
#include <dlib/gui_widgets.h>
|
||
|
#include <dlib/image_io.h>
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#include "data.hpp"
|
||
|
|
||
|
namespace opengaze{
|
||
|
|
||
|
class FaceDetector {
|
||
|
public:
|
||
|
FaceDetector();
|
||
|
~FaceDetector();
|
||
|
|
||
|
/**
|
||
|
* face and facial landmark detection selection
|
||
|
* The current implementation is only OpenFace. OpenFace use dlib for face detection
|
||
|
*/
|
||
|
enum Method{OpenFace, OpenCV, Dlib};
|
||
|
|
||
|
/**
|
||
|
* main function to detect and track face and facial landmarks
|
||
|
* @param input_img input image
|
||
|
* @param output output data structure
|
||
|
*/
|
||
|
void track_faces(cv::Mat input_img, std::vector<opengaze::Sample> &output);
|
||
|
|
||
|
void reset();
|
||
|
void setMethodType(Method method_type) {method_type_ = method_type;}
|
||
|
Method getMethodType() {return method_type_;}
|
||
|
void initialize(int number_users);
|
||
|
|
||
|
private:
|
||
|
Method method_type_;
|
||
|
|
||
|
#if USE_DLIB
|
||
|
dlib::frontal_face_detector dlib_detector_;
|
||
|
dlib::shape_predictor dlib_sp_;
|
||
|
#endif
|
||
|
|
||
|
// parameters for OpenFace
|
||
|
std::vector<bool> active_models_;
|
||
|
unsigned long num_faces_max_;
|
||
|
int detection_skip_frames_, tracking_loss_limit_;
|
||
|
float detection_resize_rate_;
|
||
|
float nonoverlap_threshold_;
|
||
|
double certainty_threshold_;
|
||
|
int landmark_indices_[6];
|
||
|
int frame_counter_;
|
||
|
unsigned long current_face_id_;
|
||
|
std::vector<unsigned long> face_ids_;
|
||
|
};
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#endif //FACE_DETECTOR_HPP
|