From 99221e4721a1246883465c2b52fbff14eb9aaa7a Mon Sep 17 00:00:00 2001
From: pans <pansen626@sina.com>
Date: 星期六, 30 三月 2019 12:12:02 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/yangwu1.3' into yangwu1.3
---
QiaoJiaSystem/StructureApp/FaceExtractElement.cpp | 76 +++++++++++++++++++++++++++++---------
1 files changed, 58 insertions(+), 18 deletions(-)
diff --git a/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp b/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp
index 7f6e288..b6cbc28 100644
--- a/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp
+++ b/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp
@@ -4,6 +4,7 @@
#include <QtCore/QString>
#include <basic/util/app/AppUtil.h>
#include <basic/util/opencv/CvUtil.h>
+#include <basic/util/app/AppPreference.hpp>
//diao鐢ㄥ搴攅s鏁版嵁灏佽鐨勭被
//#include <basic/db/ES/es/ManagerEsDB.h>
#include <basic/db/Elasticsearch/EsDBTool.h>
@@ -11,6 +12,7 @@
#include <QtCore/QJsonObject>
#include <uuid/uuid.h>
#include <jsoncpp/json/json.h>
+#include <basic/util/app/AppConfig.h>
#define state "state"
@@ -25,7 +27,7 @@
}
}
-FaceExtractElement::FaceExtractElement(std::string shareMemoryName) :
+FaceExtractElement::FaceExtractElement(std::string shareMemoryName, const SdkRule &rule) :
TimerElement(1000), sharedMemory(nullptr), fdfsClient(nullptr),
//#todo appPref.setStringData
faceExtractRpcClient(appPref.getStringData("faceExte.proxy"), appPref.getStringData("faceExte.ip"),
@@ -33,9 +35,10 @@
// faceExtractRpcClient(/*appPref.getStringData("face.extract.proxy")*/
// "faceExtractServer", "", 10008, "tcp"),//浜鸿劯鐗瑰緛鎻愬彇 淇敼鎴愮偣瀵圭偣閫氳
faceSearchRpcClient(appPref.getStringData("faceSear.proxy"), appPref.getStringData("faceSear.ip"),
- appPref.getIntData("faceSear.port"), "tcp")
+ appPref.getIntData("faceSear.port"), "tcp"),
// faceSearchRpcClient("faceCmServer", "", 10004, "tcp")
-{
+ m_sdkRule(rule),
+ m_rpcClient("RtspAnalysServer", "127.0.0.1", appPref.getIntData("RpcVTIMPort"), "tcp") {
sharedMemory = new QSharedMemory(QString(shareMemoryName.c_str()));
if (!sharedMemory->create(4608 * 2592 * 4)) {
sharedMemory->attach();
@@ -58,18 +61,22 @@
}
void FaceExtractElement::timerFunc() {
+ INFO("MYH Run Here");
std::vector<FaceToExtract> faceExtractQueueTmp;
{
std::lock_guard<std::mutex> lg(imageQueueMutex);
- if (faceExtractQueue.empty())return;
+ if (faceExtractQueue.empty()) {
+ ERR("faceExtractQueue.empty ");
+ return;
+ }
faceExtractQueueTmp.swap(faceExtractQueue);
faceExtractQueue.clear();
}
try {
string t_camIdex = getProperty("dev_id") + getProperty("ch_id");
- float t_com_sc =
- appPref.getFloatData(t_camIdex + "face.cmp") == -1 ? 75 : appPref.getFloatData(t_camIdex + "face.cmp");
+ float t_com_sc = m_sdkRule.nThreshold == 0 ? 75 : m_sdkRule.nThreshold;
+
DBG(" TESTCODE getValue" << t_camIdex << " " << t_com_sc << " " << t_com_sc / 100);
@@ -97,7 +104,7 @@
// cv::imwrite(string1, image);
// }
if (feature.empty()) {
- ERR("feature is empty");
+ INFO("No Face Find: " << getProperty("imgKey"));
continue;
}
features.clear();
@@ -110,11 +117,15 @@
CvUtil::cvMat2Buffer(faceExtractQueueTmp[i].faceImages[j], buffer);
std::string strImgUrlTmp = "";
fdfsClient->fastFds->uploadFile(buffer, strImgUrlTmp, "jpg");
- strImgUrl.append(fdfsClient->fastFds->getIp() + "/" + strImgUrlTmp);
+ // strImgUrl.append(fdfsClient->fastFds->getIp() + "/" + strImgUrlTmp);
+ DBG("strImgUrlTmp=" << strImgUrlTmp);
strImgUrl.clear();
strImgUrl = strImgUrlTmp;
// strImgUrl.append("/").append(strImgUrlTmp);
fdfsClient->rwLock.unlock();
+ } else {
+ strImgUrl = "";
+ ERR("fdfsClient is nullptr ???");
}
//鎷兼帴json
@@ -128,31 +139,41 @@
Json::Value t_json;
t_json["Id"] = str_uuid; //涓婚敭
+ std::string feature_base64;
+ feature_base64 = base64.Encode(feature.data(), feature.size());
+
//#鍦ㄥ姣斾腑娣诲姞鐗瑰緛鍊�
- t_json["FaceFeature"] = "base64";
- t_json["personId"] = "wait todo";//鍏宠仈搴曞簱浜哄憳id,浜鸿劯id
- t_json["BaseName"] = "wait todo";//鍏宠仈搴曞簱琛ㄥ悕
+ t_json["FaceFeature"] = feature_base64;
+ t_json["personId"] = "";//鍏宠仈搴曞簱浜哄憳id,浜鸿劯id
+ t_json["BaseName"] = "";//鍏宠仈搴曞簱琛ㄥ悕
//#end
// t_json["likePer"] = faceExtractQueueTmp[i].scoredRects[j].score;//浜哄憳鐩镐技搴� Score
t_json["likeDate"] = AppUtil::getTimeSecString();//"2018-01-01 01:01:01";//姣旇緝鏃堕棿
- t_json["picName"] = "wait todo";
+ t_json["picName"] = "";
- t_json["personPicUrl"] = "wait todo";//浜哄憳鍥剧墖 store
+ t_json["personPicUrl"] = "";//浜哄憳鍥剧墖 store
t_json["picAddress"] = getProperty("str_addr");//鎶撴媿鍦板潃
- t_json["picMaxUrl"] = "wait todo";//澶у浘璺緞
- t_json["picLocalUrl"] = "wait todo";//鏈湴璺緞
+ DBG("picAddress=" << t_json["picAddress"]);
+ t_json["picMaxUrl"] = "";//澶у浘璺緞
+ t_json["picLocalUrl"] = "";//鏈湴璺緞
t_json["picSmUrl"] = strImgUrl;//浜哄憳鎶撳皬鍥�
//#todo
t_json["picDate"] = faceExtractQueueTmp[i].scoredRects[j].properties["time"];
-// DBG("timeC ::::B" << t_json["picDate"].asString());
+ DBG("picDate=" << t_json["picDate"].asString());
+// DBG("timeC ::::B" << t_json["picDate"m_bIsMask].asString());
// t_json["picDate"] = AppUtil::getTimeSecString();
- t_json["content"] = "wait todo";
- t_json["viType"] = "1";//鍙湁4绉嶇被鍨� 1:personface 2:personbody 3:car 4:bicycle 5:none 鏈煡绫诲瀷
+ t_json["content"] = "";
+ //t_json["viType"] = "2";//鍙湁4绉嶇被鍨� 1:personface 2:personbody 3:car 4:bicycle 5:none 鏈煡绫诲瀷
+ t_json["sdkType"] = std::to_string(
+ m_sdkRule.nSdkType);//鍙湁4绉嶇被鍨� 1:personface 2:personbody 3:car 4:bicycle 5:none 鏈煡绫诲瀷
t_json["personIsHub"] = "4";//1: 鎶ヨ 2: 鍙枒 3: 瀹夊叏 4: 鏈煡
+
+ t_json["cluster_id"] = appPref.getStringData("clusterID");
+ t_json["ack_alarm"] = "0";
//faceExtractElement.setProperty("dev_id", str_device_id);
//faceExtractElement.setProperty("cg_id", str_ch_id);
@@ -181,6 +202,9 @@
t_json["Race"] = "";//妫�娴嬬殑绉嶆棌 搴旇涓虹┖ 鏃犳娴嬬粨鏋�
t_json["videoIp"] = getProperty("local_ip");//褰撳墠鏈嶅姟鍣↖P鍦板潃
+ t_json["cluster_id"] = appConfig.getStringProperty("clusterID");//闆嗙兢id
+ t_json["ack_alarm"] = "0";//ack_alarm鏄惁鎶ヨ
+
//#todo 浼樺寲 get vector<string> from json
switch (atoi(faceExtractQueueTmp[i].scoredRects[j].properties["race"].c_str())) {
case 1:
@@ -199,6 +223,22 @@
t_json["indeviceid"] = appPref.getStringData("fxDevID");
t_json["indevicename"] = appPref.getStringData("fxDevNAME");
+ std::string strImageKey = faceExtractQueueTmp[i].scoredRects[j].properties["imgKey"];
+ INFO("SaveImageKey To ES: " << strImageKey);
+ t_json["imgKey"] = strImageKey;
+
+ try {
+ auto server = m_rpcClient.getServer();
+ if (!server) {
+ ERR("server is null");
+ //return;
+ }
+ INFO("Record Video " << strImageKey);
+ server->recordVideo(strImageKey);
+ } catch (std::exception &e) {
+ ERR("Record Video Err: " << strImageKey << " Message: " << e.what());
+ //return;
+ }
auto faceSearchServer = faceSearchRpcClient.getServer();
if (!faceSearchServer) {
ERR("faceSearchServer is null");
--
Gitblit v1.8.0