From 080afae264fe7ff89a54886f28dff208fe5a06c4 Mon Sep 17 00:00:00 2001 From: chenshijun <csj_sky@126.com> Date: 星期二, 16 四月 2019 22:01:35 +0800 Subject: [PATCH] 整合代码 --- QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp | 57 +++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 35 insertions(+), 22 deletions(-) diff --git a/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp b/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp index 30fed97..e37f88a 100644 --- a/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp +++ b/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp @@ -123,14 +123,25 @@ } //#todo 浼樺寲 +/** + * + * @param feature 闇�瑕佸姣旂殑鐗瑰緛 + * @param info_json 闇�瑕佹彃鍏ユ暟鎹簱鐨刯son瀛楁 + * @param topN 鑾峰彇鍓嶅嚑浣� + * @param score 瀵规瘮鐨勯槇鍊� + * @return + */ ::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) + " :"); 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,14 +153,19 @@ if (reader.parse(info_json, value)) { //#todo m_rwLock.rdlock(); + // 鐗瑰緛杞寲涓篵ase64瀛樺叆鍒癹son涓� 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 + // 閬嶅巻涓嶅悓鐨勫簳搴撹繘琛屾瘮瀵� 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) { string t_alarmRet = t_tableInfo.bwType; @@ -157,10 +173,12 @@ //#todo 闈炲悓姝ュ簱鏄惁闇�瑕佹瘮杈冿紵 DBG("m_faceFCMAP compare start " << it.first); + // 瀵规瘮 t_FaceFC->compare(key, &featureData, topN); DBG("m_faceFCMAP compare end " << it.first); - + // 鏍规嵁褰撳墠绾跨▼id鑾峰彇瀵规瘮缁撴灉 auto t_results = t_FaceFC->getTopResult(key); + // 瀵规瘮缁撴灉杞崲 for (auto &t_item : t_results) { t_item.tableName = it.first; t_item.alarmRet = t_alarmRet; @@ -176,6 +194,7 @@ 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(); @@ -194,6 +213,7 @@ ERR("topResult is null"); } auto itTR(rtTR.base()); + // 鏁版嵁杞寲 ::FaceSearch::FaceResult t_faceCR; t_faceCR.id = itor->id; t_faceCR.uuid = itor->uuid; @@ -208,9 +228,10 @@ results.insert(itTR, t_faceCR); } bool retface = true; -// cout << __FUNCTION__ << " -> " << __LINE__ << " -> " << results.size() << endl; //#todo send message if (results.size() > 0) { + // 鏍规嵁浼犲叆鐨勫姣旈槇鍊煎仛绛涢�� + // 鏈垎鏀彧淇濆瓨浜嗙涓�涓姣旂粨鏋� for (auto &item : results) { //#todo 寰楀垎姣旇緝锛屽簲璇ュ湪compare涓繘琛� if (item.confidence < score) { @@ -226,15 +247,6 @@ break; } value["personId"] = item.uuid.size() > 0 ? item.uuid : "";//鍏宠仈搴曞簱浜哄憳id,浜鸿劯id - -// string tmp_tableName = item.tableName; -// if (tmp_tableName.find("lt_") == 0) { -// tmp_tableName = tmp_tableName.insert(tmp_tableName.find("lt_") + 3, "::"); -// value["BaseName"] = tmp_tableName;//鍏宠仈搴曞簱琛ㄥ悕 -// } else { -// value["BaseName"] = item.tableName.size() > 0 ? item.tableName : "";//鍏宠仈搴曞簱琛ㄥ悕 -// } - value["BaseName"] = item.tableName.size() > 0 ? item.tableName : "";//鍏宠仈搴曞簱琛ㄥ悕 value["likePer"] = item.confidence > 0 ? item.confidence : 0.0; @@ -244,10 +256,8 @@ value["personIsHub"] = item.alarmRet.size() > 0 ? item.alarmRet : "4"; auto str_uuid = value["Id"].asString(); -// DBG(value.toStyledString()); - cout << __FUNCTION__ << " -> " << __LINE__ << " -> " << "value.toStyledString() " - << value.toStyledString() << "\n score " << score << endl; + DBG("value.toStyledString() " << value.toStyledString() << "\n score " << score); // DBG("score " << score); retface = pManagerEsDB.insertData("videopersons", "perVideoPicture", value.toStyledString(), str_uuid); @@ -258,37 +268,35 @@ value["personIsHub"] = "4"; value["likePer"] = 0.0; DBG(value.toStyledString()); -// cout << __FUNCTION__ << " -> " << __LINE__ << " -> " << "value.toStyledString() " -// << value.toStyledString() << endl; retface = pManagerEsDB.insertData("videopersons", "perVideoPicture", value.toStyledString(), str_uuid); } if (!retface) { ERR("insert error"); } else { - cout << __FUNCTION__ << " -> " << __LINE__ << " -> " << "retface " << retface << endl; + ERR("retface " << retface); }; } else { ERR("json is error" << info_json); } - - -// for (auto &item : t_tables) { -// DBG(item); -// } return results; } bool FaceFeatureSearchServerI::loadFeatureData(FaceFeatureSearchServerI *faceFea) { + // 鍔犺浇搴曞簱鏁版嵁 ErlangTool::map_TabDataCache dataBaseCache = faceFea->m_erlangDbTool.findAllDatabase(); if (dataBaseCache.size() < 0 && faceFea->m_retUpdatePthread) { + // 杩欓噷杩涗笉鏉ュ惂锛� faceFea->m_retUpdatePthread = false; + //鎺у埗涓嬫柟绾跨▼鍙惎鍔ㄤ竴娆� std::thread thd(dataUpdate, faceFea); thd.detach(); } + // 鑾峰彇琛ㄤ俊鎭� auto typeInfoCache = faceFea->m_erlangDbTool.findAllTypeInfo(); + //娓呴櫎鏃ф暟鎹� faceFea->m_tableType.clear(); string str_config = faceFea->m_erlangDbTool.getConfigJsonString(); @@ -368,6 +376,7 @@ faceFea->m_inTime = getTimeLong(); if (faceFea->m_retUpdatePthread) { faceFea->m_retUpdatePthread = false; + //鎺у埗涓嬫柟绾跨▼鍙惎鍔ㄤ竴娆� std::thread thd(dataUpdate, faceFea); // faceFea->m_erlangDbTool.test(faceFea, erlangCallBackFunc); @@ -418,6 +427,10 @@ // pthread_mutex_unlock(&(func_cond_mutex)); //} +/** + * 绛夊緟搴曞簱鍔犺浇瀹屾垚锛屽苟绛夊緟淇″彿瑙﹀彂鏂扮殑鏁版嵁鍒锋柊 + * @param faceFea + */ void FaceFeatureSearchServerI::dataUpdate(FaceFeatureSearchServerI *faceFea) { long inTime = faceFea->m_inTime; // modify all db ready start update, <10s -- Gitblit v1.8.0