xuxiuxi
2017-07-28 3699eddecd1337710f2bf1e95dac3e9bb4b49574
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#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