From efafab5273ba3ff13a19f07088c320a5180188b6 Mon Sep 17 00:00:00 2001
From: pans <pansen626@sina.com>
Date: 星期四, 31 一月 2019 10:49:56 +0800
Subject: [PATCH] 1.2_布控feature: Auto stash before merge of "ywv1.2_布控feature" and "origin/ywv1.2_布控feature"
---
QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp | 138 +++++++++++++++++----------------------------
1 files changed, 53 insertions(+), 85 deletions(-)
diff --git a/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp b/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp
index 30fed97..b1f942d 100644
--- a/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp
+++ b/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp
@@ -55,82 +55,28 @@
t_live_ret = false;
}
-//#todo 浼樺寲
+/***
+ * @dep
+ */
::FaceSearch::FaceResults
FaceFeatureSearchServerI::faceSearchMax(const ::FaceSearch::Data &feature, const ::std::string &info_json,
const ::Ice::Current &) {
- thread::id key = std::this_thread::get_id();
- ClockTimer clockTimer("faceSearchMax");
- ::FaceSearch::FaceResults results;
- FaceResults t_TableCompareResult;
- AlarmData featureData;
- featureData.num = 1;
- featureData.feature.resize(feature.size());
- memcpy(featureData.feature.data(), feature.data(), feature.size());
-
- for (auto &it : m_faceFCMAP) {
- auto &t_FaceFC = it.second;
- auto t_tableInfo = m_tableType[it.first];
- bool ret = getRet(t_tableInfo.startTime, t_tableInfo.endTime);
- if (ret) {
- bool alarmRet = atoi(t_tableInfo.bwType.c_str());
- //#todo 闈炲悓姝ュ簱鏄惁闇�瑕佹瘮杈冿紵
- t_FaceFC->compare(key, &featureData, 1);
- auto t_results = t_FaceFC->getTopResult(key);
- for (auto &t_item : t_results) {
- t_item.tableName = it.first;
- //#todo baojing zhuangtai ?
- t_item.alarmRet = ret;
- t_TableCompareResult.push_back(t_item);
- }
- }
- }
-
-// DBG("t_TableCompareResult size" << t_TableCompareResult.size());
- for (auto itor = t_TableCompareResult.begin(); itor != t_TableCompareResult.end(); ++itor) {
- float new_confidence = itor->confidence;
- auto rtTR = results.rbegin();
- if (!results.empty()) {
- auto temp = rtTR->confidence;
- while (new_confidence > temp) {
- ++rtTR;
- if (rtTR == (results.rend() + 1)) {
- rtTR--;
- break;
- } else {
-// DBG(" sc is "<< new_confidence << " > " << temp);
- }
- temp = rtTR->confidence;
- }
- } else {
-// INFO("topResult is null");
- }
- auto itTR(rtTR.base());
- ::FaceSearch::FaceResult t_faceCR;
- t_faceCR.id = itor->id;
- t_faceCR.uuid = itor->uuid;
- t_faceCR.tableName = itor->tableName;
- t_faceCR.confidence = itor->confidence;
- DBG("compare results tablename is " << t_faceCR.tableName << " id is " << t_faceCR.uuid << " sc is"
- << t_faceCR.confidence);
- results.insert(itTR, t_faceCR);
- }
-
-
- //#todo send message
-
- return results;
+ return ::FaceSearch::FaceResults();
}
//#todo 浼樺寲
::FaceSearch::FaceResults
FaceFeatureSearchServerI::faceSearchTopN(const ::FaceSearch::Data &feature, const ::std::string &info_json,
::Ice::Int topN, ::Ice::Float score, const ::Ice::Current &) {
- ClockTimer clockTimer("faceSearchTopN " + to_string(score) + " :");
+ ClockTimer clockTimer("faceSearchTopN ");
INFO("faceSearchTopN start");
+// #鑾峰彇绾跨▼id鍘绘壘璧勬簮鍙ユ焺
thread::id key = std::this_thread::get_id();
+// 杩斿洖缁撴灉
::FaceSearch::FaceResults results;
+// 瀵规瘮缁撴灉鐨勪复鏃剁紦瀛�
FaceResults t_TableCompareResult;
+// 闇�瑕佸姣旂殑鏁版嵁
AlarmData featureData;
featureData.num = topN;
featureData.feature.resize(feature.size());
@@ -142,40 +88,54 @@
if (reader.parse(info_json, value)) {
//#todo
m_rwLock.rdlock();
- std::string feature_base64;
- feature_base64 = base64.Encode(feature.data(), feature.size());
- value["FaceFeature"] = feature_base64;
+// 寮�濮嬪姣�
DBG("auto &it : m_faceFCMAP start " << m_faceFCMAP.size());
//#todo lock
+// 閬嶅巻涓嶅悓鐨勫簳搴撶被#TODO鏄惁瑕佸仛涓�娆″ぇ鑼冨洿瀵规瘮鐒跺悗缁欏嚭缁撴灉鍐嶇瓫閫夛紵
for (auto &it : m_faceFCMAP) {
auto &t_FaceFC = it.second;
+// 琛ㄧ殑淇℃伅#TODO寰呯Щ鍑哄拰涓氬姟瑙h��
auto t_tableInfo = m_tableType[it.first];
- bool ret = getRet(t_tableInfo.startTime, t_tableInfo.endTime);
+// 鍒ゆ柇琛ㄧ殑鐢熸晥鐘舵�侊紝鍐冲畾鏄惁杩涜瀵规瘮/鏃堕棿鍜屽惎鐢ㄧ姸鎬�
+ bool ret = (t_tableInfo.enabled == "1" && getRet(t_tableInfo.startTime, t_tableInfo.endTime));
if (ret) {
+// 闇�瑕佸姣�
+
+// 琛ㄧ殑绫诲瀷/榛戠櫧鍚嶅崟
string t_alarmRet = t_tableInfo.bwType;
// bool alarmRet = atoi(t_tableInfo.bwType.c_str());
//#todo 闈炲悓姝ュ簱鏄惁闇�瑕佹瘮杈冿紵
DBG("m_faceFCMAP compare start " << it.first);
- t_FaceFC->compare(key, &featureData, topN);
+// 瀵规瘮鍒嗘暟,鎽勫儚鏈哄垎鏁板拰甯冩帶搴撳垎鏁帮紝璋佷綆鎸夎皝?鏆傛椂涓嶅仛
+// if(){
+// }
+// score
+// 瀵规瘮鍑芥暟
+ float t_score = atoi(t_tableInfo.cmpThreshold.c_str()) / 100;
+ t_FaceFC->compare(key, &featureData, topN, t_score);
DBG("m_faceFCMAP compare end " << it.first);
-
+// 鑾峰彇瀵规瘮缁撴灉
auto t_results = t_FaceFC->getTopResult(key);
+// 閬嶅巻缁撴灉骞舵坊鍔犺ˉ鍏呭瓧娈�
for (auto &t_item : t_results) {
t_item.tableName = it.first;
t_item.alarmRet = t_alarmRet;
+// 鏀惧叆鏈浠诲姟鐨勫姣旂紦瀛�
t_TableCompareResult.push_back(t_item);
// DBG("t_results item : uuid is " << t_item.uuid << " confidence " << t_item.confidence << it.first);
}
} else {
+// 涓嶉渶瑕佸姣�
INFO("m_faceFCMAP ret is false " << it.first);
}
}
m_rwLock.unlock();
DBG("auto &it : m_faceFCMAP end");
-
+// 鏈浠诲姟鐨勫姣旂粨鏋滄暟閲�
DBG("t_TableCompareResult size" << t_TableCompareResult.size());
//sort_all_results
+// 鎵�鏈夎〃瀵规瘮缁撴潫鍚庯紝鎺掑簭鍙婄粨鏋滄牸寮忚浆鎹�
for (auto itor = t_TableCompareResult.begin(); itor != t_TableCompareResult.end(); ++itor) {
float new_confidence = itor->confidence;
auto rtTR = results.rbegin();
@@ -208,19 +168,27 @@
results.insert(itTR, t_faceCR);
}
bool retface = true;
-// cout << __FUNCTION__ << " -> " << __LINE__ << " -> " << results.size() << endl;
+
//#todo send message
+// 鎷兼帴闇�瑕佸彂閫佺殑娑堟伅
+// 鐗瑰緛缂栫爜涓篵ase64鐢ㄤ簬涓婁紶锛�#todo 鎷嗚В鍒板闈㈠幓鍋�
+ std::string feature_base64;
+ feature_base64 = base64.Encode(feature.data(), feature.size());
if (results.size() > 0) {
+// 鎵惧埌鐩镐技浜� 鍙兘瀵规瘮鍒嗘暟涓嶆弧瓒虫潯浠�
+// #TODO澶氭潯瀵规瘮缁撴灉鎷兼帴鎴愪竴涓爣绛�
for (auto &item : results) {
//#todo 寰楀垎姣旇緝锛屽簲璇ュ湪compare涓繘琛�
+// 灏忎簬鎸囧畾鐨勯槇鍊煎垯璁や负娌℃湁鎵惧埌鏄檶鐢熶汉
if (item.confidence < score) {
//#todo test
auto str_uuid = value["Id"].asString();
value["personIsHub"] = "4";
value["likePer"] = 0.0;
// DBG(value.toStyledString());
- cout << __FUNCTION__ << " -> " << __LINE__ << " -> " << "value.toStyledString() "
- << value.toStyledString() << endl;
+ DBG("value.toStyledString() " << value.toStyledString());
+ value["FaceFeature"] = feature_base64;
+
retface = pManagerEsDB.insertData("videopersons", "perVideoPicture", value.toStyledString(),
str_uuid);
break;
@@ -239,16 +207,20 @@
value["likePer"] = item.confidence > 0 ? item.confidence : 0.0;
value["personPicUrl"] = item.imgUrl.size() > 0 ? item.imgUrl : "";//diku tupian
+
+// string strC = item.idcard+ item.
value["idcard"] = item.idcard.size() > 0 ? item.idcard : "";//diku tupian
//濡傛灉 alarmRet 涓嶄负绌烘妸 浠栫殑鍊� 鏀惧叆 personIsHub,鍚﹀垯涓�4
+// #TODO 濡傛灉鍚敤鍒欐甯稿垽鏂�,鏈竷鎺у垯璁や负鏄湭鐭ワ紵
+// if () {
+//
+// }
value["personIsHub"] = item.alarmRet.size() > 0 ? item.alarmRet : "4";
auto str_uuid = value["Id"].asString();
-// DBG(value.toStyledString());
+ DBG("value.toStyledString() " << value.toStyledString());
+ value["FaceFeature"] = feature_base64;
- cout << __FUNCTION__ << " -> " << __LINE__ << " -> " << "value.toStyledString() "
- << value.toStyledString() << "\n score " << score << endl;
-// DBG("score " << score);
retface = pManagerEsDB.insertData("videopersons", "perVideoPicture", value.toStyledString(),
str_uuid);
break;
@@ -258,6 +230,7 @@
value["personIsHub"] = "4";
value["likePer"] = 0.0;
DBG(value.toStyledString());
+ value["FaceFeature"] = feature_base64;
// cout << __FUNCTION__ << " -> " << __LINE__ << " -> " << "value.toStyledString() "
// << value.toStyledString() << endl;
retface = pManagerEsDB.insertData("videopersons", "perVideoPicture", value.toStyledString(),
@@ -271,13 +244,6 @@
} else {
ERR("json is error" << info_json);
}
-
-
-
-
-// for (auto &item : t_tables) {
-// DBG(item);
-// }
return results;
}
@@ -288,7 +254,7 @@
std::thread thd(dataUpdate, faceFea);
thd.detach();
}
- auto typeInfoCache = faceFea->m_erlangDbTool.findAllTypeInfo();
+// auto typeInfoCache = faceFea->m_erlangDbTool.findAllTypeInfo();
faceFea->m_tableType.clear();
string str_config = faceFea->m_erlangDbTool.getConfigJsonString();
@@ -307,6 +273,8 @@
// tabInfo.bwType = item.second.bwType = typeInfoCache.find(item.first)->second.bwType;
tabInfo.bwType = item.second.bwType;//= typeInfoCache.find(item.first)->second.bwType;
tabInfo.createBy = item.second.create_by;
+ tabInfo.enabled = item.second.enabled;
+ tabInfo.cmpThreshold = item.second.cmpThreshold;
if ((tabInfo.tableName.find("lt_") == 0) && (tabInfo.createBy != appConfig.getStringProperty("erlNode"))) {
continue;
--
Gitblit v1.8.0