From 439a23896bda9c4e954092816354914e645579b6 Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期一, 10 六月 2019 09:37:13 +0800 Subject: [PATCH] 替换这个文件 --- QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp | 49 ++++++++++++++++++++++++++----------------------- 1 files changed, 26 insertions(+), 23 deletions(-) diff --git a/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp b/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp index 4cab786..3281d1c 100644 --- a/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp +++ b/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp @@ -54,11 +54,15 @@ //#todo map 1->2 modify 2->1 bool FaceDBCompareServer::compare(thread::id key, AlarmData *alarmData, int topN) { + m_dbRWLocks_Lock.wrlock(); if (m_dbRWLocks.find(key) == m_dbRWLocks.end()) { m_dbRWLocks[key] = RWLock(); } RWLock &t_rwl = m_dbRWLocks[key]; + DBG("m_dbRWLocks ok"); + m_dbRWLocks_Lock.unlock(); // ClockTimer clockTimer("compare "); + //淇濇姢 t_compareResults RWLock t_rwLock; m_rwLock.rdlock(); @@ -77,12 +81,15 @@ FaceResult tface{0, data.uuid, alarmData->tableName, sc, data.faceUrl, data.idcard, ""}; t_rwLock.wrlock(); //#todo + // 瀵规瘮缁撴灉淇濆瓨 if (sc < t_compareResults.end()->second.confidence) { t_rwLock.unlock(); return; } + // 淇濆瓨瀵规瘮缁撴灉 t_compareResults.insert(make_pair(tface.confidence, tface)); //#todo 10 + // 鍙繚鐣欐渶楂樼殑n涓姣旂粨鏋� if (t_compareResults.size() > topN) { t_compareResults.erase((--t_compareResults.end()), t_compareResults.end()); } @@ -116,8 +123,11 @@ int maxSearchFaces = alarmData->num; t_rwl.wrlock(); + DBG("topResult[key] before"); auto &t_topResult = topResult[key]; + DBG("topResult[key] ok"); t_topResult.clear(); + // 瀵规瘮缁撴灉杞崲 for (auto &item : t_compareResults) { auto &it = item.second; //#todo @@ -191,44 +201,37 @@ m_rwLock.wrlock(); if (t_json["\"syncTpye\""].type() == Json::nullValue) { + // 鍚屾搴�/鐗瑰緛鏄痓ase64 +// #todo sqlite search data from file auto str_tab = t_json["\"tableName\""].asString(); + DBG("str_tab is " << str_tab); m_tableName = str_tab.substr(1, str_tab.length() - 2);//.append("_fea"); + DBG("m_tableName is " << m_tableName); - string tet = "./syncDBClient "; - string str_json = writer.write(t_json); - tet.append("\"" + str_json.substr(0, str_json.length() - 1) + "\" "); - INFO(tet); - system(tet.c_str()); dataMap.clear(); try { - // init - BISTL::BiMapFeaData biMapFeaData(m_tableName); - auto mymap = biMapFeaData.getMap(); - auto size = mymap->size(); - //#todo - for (auto it = mymap->begin(); it != mymap->end(); it++) { - string str_uuid(it->second.m_id.data()); - string ft(it->second.m_feature.data()); - string imgUrl(it->second.m_imgUrl.data()); - string strIdCard(it->second.m_idcard.data()); + + auto mymap = m_erlangDbTool->loadFaceFeaData(m_tableName); + DBG(m_tableName << " db size is " << mymap.size()); + for (auto &item : mymap) { + auto &it = item.second; string str2; - str2 = base64.Decode(ft.data(), ft.length()); + str2 = base64.Decode(it.feature.data(), it.feature.size()); std::vector<unsigned char> t_fea; t_fea.resize(str2.size()); memcpy(t_fea.data(), str2.data(), str2.size()); - auto &test = dataMap[str_uuid]; - test.uuid = str_uuid; + auto &test = dataMap[it.id]; + test.uuid = it.id; test.features.push_back(t_fea); - test.faceUrl = imgUrl; - test.idcard = strIdCard; + test.faceUrl = it.img; + test.idcard = it.idcard; + test.enabled = it.enable; + test.monLevel = it.monLevel; } } catch (const std::exception &e) { printf("Exception:%s\n", e.what()); - BISTL::shared_memory_object::remove(m_tableName.c_str()); } - BISTL::shared_memory_object::remove(m_tableName.c_str()); appPref.setIntData(m_tableName, 1); - DBG(m_tableName << " size is " << dataMap.size()); } else { //#todo get sqlite3 data m_tableName = t_json["tableName"].asCString(); -- Gitblit v1.8.0