#ifndef _ST_FACE_CACHE_H_ #define _ST_FACE_CACHE_H_ #include #include "face_daemon_proto.h" #define FDP_FDR_INVALID FDP_FaceDetectResult(STFS_DBID_INVALID, 0, 0) #define ENABLE_AUTO_CREATE_STFACEDB #define ENABLE_DETECT_IN_NEGATIVE_DBID //#define ENABLE_ADD_TO_TEMPDB_WHEN_NOT_DETECT #define RESULT_CONFIDENCE 0.70 #define TEMPDB_FACE_COUNT_MAX 10 enum STFSpecialDBID { STFS_DBID_INVALID = 0, STFS_DBID_VISITOR_1 = -1, STFS_DBID_TEMPDB_1 = -1000 }; struct STFaceImage; class STFaceCache { public: STFaceCache(const std::string& _stfacedbPath); ~STFaceCache(); bool init(); void finit(); bool load_dbs(); void close_dbs(); FDP_FaceDetectResult detect(const STFaceImage& img); FDP_FaceDetectResult add(const STFaceImage& img); void search(const STFaceImage& img, fdr_vec_t& topResult); FDP_FaceDetectResult compare(const STFaceImage& img1, const STFaceImage& img2); void delete_db(int dbid); //#todo need a delete img, if business not linked faceid and its personid // they can delete it and save/find again! private: FDP_FaceDetectResult detect_neg(const STFaceImage& img); private: const std::string stfacedbPath; const std::string stfaceModels; void* _dbContext; void* _cacheContext; int tempdbFaceCount; }; #endif