#ifndef _ST_FACE_CACHE_H_
|
#define _ST_FACE_CACHE_H_
|
|
#include <string>
|
#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
|