#ifndef _PL_SENSETIMEFACETRACK_H_ #define _PL_SENSETIMEFACETRACK_H_ #include "PipeLine.h" #include struct FacePoint { int x; int y; FacePoint() : x(0), y(0) { } }; struct FaceRect { FacePoint leftTop; FacePoint rightBottom; FaceRect() : leftTop(), rightBottom() { } }; struct SensetimeFaceFeature { FaceRect rect; int id; float yaw; float pitch; float roll; float eyeDistance; std::vector featurePoints; SensetimeFaceFeature() : rect(), id(0), yaw(0.0), pitch(0.0), roll(0.0), eyeDistance(0.0), featurePoints() {} }; typedef std::vector st_ff_vect_t; struct SensetimeFaceTrackConfig { int point_size; // 21 / 106 int point_size_config; // CV_DETECT_ENABLE_ALIGN_21 / CV_DETECT_ENABLE_ALIGN_106 int detect_face_cnt_limit; // -1 bool draw_face_rect; bool draw_face_feature_point; bool generate_face_feature; // for PL_SensetimeFaceFeatureEmit SensetimeFaceTrackConfig() : point_size(21), point_size_config(-1), detect_face_cnt_limit(-1), draw_face_rect(true), draw_face_feature_point(true), generate_face_feature(false) { } }; class PL_SensetimeFaceTrack : public PipeLineElem { public: PL_SensetimeFaceTrack(); virtual ~PL_SensetimeFaceTrack(); virtual bool init(void* args); virtual void finit(); virtual bool pay(const PipeMaterial& pm); virtual bool gain(PipeMaterial& pm); private: void* internal; }; PipeLineElem* create_PL_SensetimeFaceTrack(); #endif