X-Git-Url: https://adrianiainlam.tk/git/?p=facial-landmarks-for-cubism.git;a=blobdiff_plain;f=include%2Ffacial_landmark_detector.h;fp=include%2Ffacial_landmark_detector.h;h=85f35127d9ceeb7e25f2caea4d729941de6d6c8e;hp=5163fe9a4e810e8b28f94e74521ab916ebd70a73;hb=af96b559e637dd8f5eaa4ee702ea8d2aec63d371;hpb=e7870591434b48c02191cab4ef853dca1b5e4597 diff --git a/include/facial_landmark_detector.h b/include/facial_landmark_detector.h index 5163fe9..85f3512 100644 --- a/include/facial_landmark_detector.h +++ b/include/facial_landmark_detector.h @@ -27,10 +27,18 @@ SOFTWARE. #include #include -#include -#include -#include -#include + +struct Point +{ + double x; + double y; + + Point(double _x = 0, double _y = 0) + { + x = _x; + y = _y; + } +}; class FacialLandmarkDetector { @@ -69,29 +77,25 @@ private: RIGHT }; - cv::VideoCapture webcam; - dlib::image_window win; - dlib::frontal_face_detector detector; - dlib::shape_predictor predictor; bool m_stop; - double calcEyeAspectRatio(dlib::point& p1, dlib::point& p2, - dlib::point& p3, dlib::point& p4, - dlib::point& p5, dlib::point& p6) const; + double calcEyeAspectRatio(Point& p1, Point& p2, + Point& p3, Point& p4, + Point& p5, Point& p6) const; - double calcRightEyeAspectRatio(dlib::full_object_detection& shape) const; - double calcLeftEyeAspectRatio(dlib::full_object_detection& shape) const; + double calcRightEyeAspectRatio(Point landmarks[]) const; + double calcLeftEyeAspectRatio(Point landmarks[]) const; double calcEyeOpenness(LeftRight eye, - dlib::full_object_detection& shape, + Point landmarks[], double faceYAngle) const; - double calcMouthForm(dlib::full_object_detection& shape) const; - double calcMouthOpenness(dlib::full_object_detection& shape, double mouthForm) const; + double calcMouthForm(Point landmarks[]) const; + double calcMouthOpenness(Point landmarks[], double mouthForm) const; - double calcFaceXAngle(dlib::full_object_detection& shape) const; - double calcFaceYAngle(dlib::full_object_detection& shape, double faceXAngle, double mouthForm) const; - double calcFaceZAngle(dlib::full_object_detection& shape) const; + double calcFaceXAngle(Point landmarks[]) const; + double calcFaceYAngle(Point landmarks[], double faceXAngle, double mouthForm) const; + double calcFaceZAngle(Point landmarks[]) const; void populateDefaultConfig(void); void parseConfig(std::string cfgPath); @@ -111,14 +115,10 @@ private: struct Config { - int cvVideoCaptureId; - std::string predictorPath; double faceYAngleCorrection; double eyeSmileEyeOpenThreshold; double eyeSmileMouthFormThreshold; double eyeSmileMouthOpenThreshold; - bool showWebcamVideo; - bool renderLandmarksOnVideo; bool lateralInversion; std::size_t faceXAngleNumTaps; std::size_t faceYAngleNumTaps; @@ -127,7 +127,6 @@ private: std::size_t mouthOpenNumTaps; std::size_t leftEyeOpenNumTaps; std::size_t rightEyeOpenNumTaps; - int cvWaitKeyMs; double eyeClosedThreshold; double eyeOpenThreshold; double mouthNormalThreshold;