From a89689b92b07cf1830ad8b46521eda92e7f927c0 Mon Sep 17 00:00:00 2001 From: pansen <pansen626@sina.com> Date: 星期三, 30 一月 2019 16:37:45 +0800 Subject: [PATCH] 修改bug --- QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp | 146 +++++++++++++++++++----------------------------- 1 files changed, 57 insertions(+), 89 deletions(-) diff --git a/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp b/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp index 3047650..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()); @@ -141,41 +87,55 @@ 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()); +// 鏈浠诲姟鐨勫姣旂粨鏋滄暟閲� + 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(); @@ -203,24 +163,32 @@ t_faceCR.imgUrl = itor->face_img_url; t_faceCR.idcard = itor->idCard; t_faceCR.alarmRet = itor->alarmRet; -// DBG("compare results tablename is " << t_faceCR.tableName << " id is " << t_faceCR.uuid << " sc is" -// << t_faceCR.confidence); + DBG("compare results tablename is " << t_faceCR.tableName << " id is " << t_faceCR.uuid << " pic n " + << t_faceCR.idcard << " sc is" << t_faceCR.confidence); 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