| | |
| | | #include <vector>
|
| | | #include <cmath>
|
| | |
|
| | | struct SensetimeFaceFeature
|
| | | {
|
| | | PLGH_Rect rect;
|
| | | int id;
|
| | |
|
| | | float score;
|
| | |
|
| | | /* Camera vision vector point to face
|
| | | * * * *
|
| | | * * * *
|
| | | * * * *
|
| | | */
|
| | | float yaw;
|
| | |
|
| | | /* Camera vision vector point to face
|
| | | * * * *
|
| | | * * * *
|
| | | * * * *
|
| | | */
|
| | | float pitch;
|
| | |
|
| | | /* Camera vision vector point to face
|
| | | * * * *
|
| | | * * * *
|
| | | * * * *
|
| | | */
|
| | | float roll;
|
| | |
|
| | | float eyeDistance;
|
| | | PLGH_Path featurePoints;
|
| | |
|
| | | bool outOfFrame;
|
| | | |
| | | SensetimeFaceFeature() : |
| | | rect(), id(0), score(0.0), yaw(0.0), pitch(0.0), roll(0.0), eyeDistance(0.0), featurePoints(),
|
| | | outOfFrame(false)
|
| | | {}
|
| | |
|
| | | bool test_face_in_cone(float _yaw, float _pitch, float _roll) const
|
| | | {
|
| | | return (std::abs(yaw) < _yaw && std::abs(pitch) < _pitch && std::abs(roll) < _roll);
|
| | | }
|
| | | };
|
| | |
|
| | | typedef std::vector<SensetimeFaceFeature> 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;
|
| | | bool generate_face_point;
|
| | | int explode_feature_rect_x;
|
| | | int explode_feature_rect_y;
|
| | | bool clamp_feature_rect; // clamp fr width and height
|
| | | int doTrackPerFrame;
|
| | |
|
| | | std::string license_file_path;
|
| | | std::string license_str;
|
| | |
|
| | | float visionConeAngle;
|
| | |
|
| | | bool evenWidthHeight;
|
| | | |
| | | float score_min;
|
| | |
|
| | | 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), generate_face_point(false),
|
| | | explode_feature_rect_x(0), explode_feature_rect_y(0),
|
| | | clamp_feature_rect(false), doTrackPerFrame(1),
|
| | | license_file_path(), license_str(),
|
| | | visionConeAngle(90.1), evenWidthHeight(true), |
| | | score_min(0.0f)
|
| | | { }
|
| | | };
|
| | | #include "PL_SensetimeFaceTrack.h"
|
| | |
|
| | | class PL_SensetimeFaceTrackMultiTrd : public PipeLineElem
|
| | | {
|
| | |
| | |
|
| | | virtual bool pay(const PipeMaterial& pm);
|
| | | virtual bool gain(PipeMaterial& pm);
|
| | |
|
| | | private:
|
| | | static bool pay_breaker_MBFT_YUV(const PipeMaterial* pm, void* args);
|
| | | |
| | |
|
| | | private:
|
| | | static void* pay_thd(void *arg);
|
| | | void* internal;
|
| | | pthread_mutex_t pay_mutex;
|
| | | pthread_mutex_t gain_mutex;
|
| | | };
|
| | |
|
| | | PipeLineElem* create_PL_SensetimeFaceTrackMultiTrd();
|