派生自 development/c++

pansen
2019-03-07 d3b7bbe7102cd089680a828f5d8f6402c8cf6342
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
56
57
58
59
60
61
62
63
64
65
66
67
#ifndef FACEEXTRACTELEMENT_H
#define FACEEXTRACTELEMENT_H
 
#include "SaveVideoRpc.h"
#include <FaceServer.h>
#include <FaceSearchServer.h>
#include <basic/pipe/TimerElement.h>
#include <basic/util/BASE64/Base64.h>
#include "TrackingTrigger.h"
#include <basic/rpc/IceRpc.hpp>
#include <basic/util/fastdfs/FastFds.hpp>
#include <opencv2/opencv.hpp>
#include <queue>
#include <mutex>
#include <jsoncpp/json/json.h>
#include "DBStruct.h"
#define VECTOR_MAX 50
 
class QSharedMemory;
 
struct FaceToExtract {
    string uuid;
    string time;
    cv::Mat image;
    FaceDetect::Faces facesPos;
    std::vector<ScoredRect> scoredRects;
    std::vector<cv::Mat> faceImages;
};
 
class FaceExtractElement : public TimerElement {
public:
 
    FaceExtractElement(std::string shareMemoryName,const SdkRule& rule);
    //FaceExtractElement(std::string shareMemoryName,const SdkRule& rule,SaveVideoRpcClient_t& rpcClient);
 
    ~FaceExtractElement();
 
    void setFdfs(FastFdsWithLock *p_fdfsClient) {
        fdfsClient = p_fdfsClient;
    }
 
    void submitFaceExtract(FaceToExtract faceToExtract);
 
//    AlarmServerInterface::TableNames getTableNames() const;
    std::vector<::FaceDetect::Data> getFeatures() const;
 
private:
 
    virtual void timerFunc() override;
 
    IceRpcClient<FaceDetect::FaceExtractServerPrx> faceExtractRpcClient;
    IceRpcClient<FaceSearch::FaceFeatureSearchServerPrx> faceSearchRpcClient;
    FastFdsWithLock *fdfsClient;
    std::vector<FaceToExtract> faceExtractQueue;
    std::mutex imageQueueMutex;
    QSharedMemory *sharedMemory;
 
//    AlarmServerInterface::TableNames tableNames;
    std::vector<::FaceDetect::Data> features;
 
    Base64 base64;
    SdkRule m_sdkRule;
    SaveVideoRpcClient_t m_rpcClient;
};
 
 
#endif // FACEEXTRACTELEMENT_H