#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
|