| | |
| | | std::string strUUID = value["uuid"].asString(); |
| | | |
| | | std::string Enabled = value["enabled"].asString(); |
| | | Enabled = Enabled.empty() ? "1" : Enabled; |
| | | std::string TableType = value["TableType"].asString(); |
| | | std::string SyncType = value["SyncType"].asString(); |
| | | std::string TableId = value["TableId"].asString(); |
| | | std::string BwType = value["BwType"].asString(); |
| | | std::string createBy = value["createBy"].asString(); |
| | | std::string monLevel = value["monLevel"].asString(); |
| | | |
| | | std::string UploadFlag = "-1"; |
| | | if (SyncType == "1") { |
| | |
| | | // std::string uuid = ""; |
| | | bool ret_addPerson = false; |
| | | |
| | | addPersonMToDB(TableName, img_url, SyncType, feature_base64, faceResults, idcard, strUUID, ret_addPerson); |
| | | addPersonMToDB(TableName, img_url, SyncType, feature_base64, faceResults, idcard, strUUID, monLevel, Enabled, |
| | | ret_addPerson); |
| | | |
| | | if (ret_addPerson && strUUID.size() > 0) { |
| | | std::string str_result = std::string("{\"uuid\":").append( |
| | |
| | | std::string TableId = value["TableId"].asString(); |
| | | std::string BwType = value["BwType"].asString(); |
| | | std::string CreateBy = value["createBy"].asString(); |
| | | std::string monLevel = value["monLevel"].asString(); |
| | | // std::string BwType = value["BwType"].asString(); |
| | | std::string UploadFlag = "-1"; |
| | | if (SyncType == "1") { |
| | |
| | | fieldValues.insert(make_pair("uuid", strUUID)); |
| | | fieldValues.insert(make_pair("idCard", idcard)); |
| | | fieldValues.insert(make_pair("enabled", Enabled)); |
| | | fieldValues.insert(make_pair("monitorLevel", monLevel)); |
| | | ret_addPerson = m_SqliteFaceEncap.updateFace(TableName, addFaceData, fieldValues); |
| | | } |
| | | } else { |
| | | fieldValues.insert(make_pair("uuid", strUUID)); |
| | | fieldValues.insert(make_pair("idCard", idcard)); |
| | | fieldValues.insert(make_pair("enabled", Enabled)); |
| | | fieldValues.insert(make_pair("monitorLevel", monLevel)); |
| | | ret_addPerson = erlangDbTool->updatePerson(strUUID, addFaceData, fieldValues); |
| | | } |
| | | |
| | |
| | | |
| | | void devHttpServer_c::addPersonMToDB(const string &TableName, const string &img_url, const string &SyncType, |
| | | const string &feature_base64, const Features &faceResults, string &idcard, |
| | | string &strUUID, bool &ret_addPerson) { |
| | | string &strUUID, string &monLevel, string &Enabled, bool &ret_addPerson) { |
| | | FieldValues fieldValues; |
| | | AddFaceData addFaceData; |
| | | |
| | | addFaceData.uuid = strUUID; |
| | | addFaceData.faceUrl = img_url; |
| | | |
| | | fieldValues.insert(make_pair("monitorLevel", monLevel)); |
| | | fieldValues.insert(make_pair("enabled", Enabled)); |
| | | fieldValues.insert(make_pair("idCard", idcard)); |
| | | |
| | | if (SyncType == "0") { |
| | | FieldValues fieldValues; |
| | | AddFaceData addFaceData; |
| | | addFaceData.feature.resize(faceResults[0].feature.size()); |
| | | memcpy(addFaceData.feature.data(), faceResults[0].feature.data(), faceResults[0].feature.size()); |
| | | |
| | | //#todo uuid have value is update |
| | | if (strUUID.size() <= 0) { |
| | | // get Person id |
| | | |
| | | strUUID = AppUtil::getPersonId(m_batch, m_SerialNumber); |
| | | addFaceData.uuid = strUUID; |
| | | addFaceData.faceUrl = img_url; |
| | | |
| | | fieldValues.insert(make_pair("uuid", strUUID)); |
| | | fieldValues.insert(make_pair("idCard", idcard)); |
| | | auto t_id = m_SqliteFaceEncap.addFace(TableName, addFaceData, fieldValues); |
| | | ret_addPerson = t_id.size() > 0 ? true : false; |
| | | } else { |
| | | //#todo update table |
| | | addFaceData.uuid = strUUID; |
| | | addFaceData.faceUrl = img_url; |
| | | |
| | | fieldValues.insert(make_pair("uuid", strUUID)); |
| | | fieldValues.insert(make_pair("idCard", idcard)); |
| | | ret_addPerson = m_SqliteFaceEncap.updateFace(TableName, addFaceData, fieldValues); |
| | | } |
| | | |
| | | } else { |
| | | //#todo update data |
| | | // get Person id |
| | | strUUID = strUUID.size() > 0 ? strUUID : AppUtil::getPersonId(m_batch, m_SerialNumber); |
| | | ret_addPerson = ret_addPerson = erlangDbTool->addPerson(strUUID, TableName, feature_base64, img_url, |
| | | idcard); |
| | | if (strUUID.size() <= 0) { |
| | | // insert |
| | | strUUID = AppUtil::getPersonId(m_batch, m_SerialNumber); |
| | | // ret_addPerson = ret_addPerson = erlangDbTool->addPerson(strUUID, TableName, feature_base64, img_url, |
| | | // idcard); |
| | | fieldValues.insert(make_pair("uuid", strUUID)); |
| | | addFaceData.feature_base64 = feature_base64; |
| | | ret_addPerson = erlangDbTool->addPerson(TableName, addFaceData, fieldValues); |
| | | } else { |
| | | // update |
| | | fieldValues.insert(make_pair("uuid", strUUID)); |
| | | addFaceData.feature_base64 = feature_base64; |
| | | ret_addPerson = erlangDbTool->updatePerson(strUUID, addFaceData, fieldValues); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | subJson.append("\"tableName\":\"" + TableName + "\","); |
| | | subJson.append("\"idcard\":\"" + item.second.idcard + "\","); |
| | | subJson.append("\"enable\":\"" + item.second.enable + "\","); |
| | | subJson.append("\"monLevel\":\"" + item.second.monLevel + "\","); |
| | | subJson.append("\"imgUrl\":\"" + item.second.img + "\""); |
| | | // subJson.append("\"feature\":\"" + item.second.feature + "\","); |
| | | //#todo modifysvn upda svn comm |
| | |
| | | |
| | | void |
| | | addPersonMToDB(const string &TableName, const string &img_url, const string &SyncType, const string &feature_base64, |
| | | const Features &faceResults, string &idcard, string &strUUID, bool &ret_addPerson); |
| | | const Features &faceResults, string &idcard, string &strUUID, string &monLevel, string &Enabled, |
| | | bool &ret_addPerson); |
| | | |
| | | void getMat(string &img_url, const string &img_base64, cv::Mat &image) const; |
| | | }; |
| | |
| | | std::string faceUrl; |
| | | std::string idcard; |
| | | std::string enabled; |
| | | std::string monLevel; |
| | | }; |
| | | |
| | | static std::vector<std::string> AlarmServerPropertyAnalyseByComma(std::string str_list) { |
| | |
| | | test.features.push_back(t_fea); |
| | | test.faceUrl = it.img; |
| | | test.idcard = it.idcard; |
| | | test.enabled = it.enable; |
| | | test.monLevel = it.monLevel; |
| | | } |
| | | // //#todo |
| | | // for (auto it = mymap->begin(); it != mymap->end(); it++) { |
| | |
| | | test.faceUrl = t_sen.faceurl; |
| | | test.idcard = t_faceInfoCache[t_sen.uuid].idCard; |
| | | test.enabled = t_sen.enable; |
| | | test.monLevel = t_faceInfoCache[t_sen.uuid].monLevel; |
| | | } |
| | | } |
| | | // åè¯å·æ°å½æ°ï¼å½ååºåºçæ°æ®åå¤å®æ |
| | |
| | | ::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(); |
| | |
| | | // } |
| | | // score |
| | | // 对æ¯å½æ° |
| | | t_FaceFC->compare(key, &featureData, topN,); |
| | | 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); |
| | |
| | | |
| | | 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 妿å¯ç¨åæ£å¸¸å¤æ,æªå¸æ§åè®¤ä¸ºæ¯æªç¥ï¼ |
| | |
| | | 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(); |
| | | |
| | |
| | | // 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; |
| | |
| | | tableInfo.sex = query.value(3).toString().toStdString(); |
| | | tableInfo.idCard = query.value(4).toString().toStdString(); |
| | | tableInfo.phoneNum = query.value(5).toString().toStdString(); |
| | | tableInfo.enable = query.value(10).toString().toStdString(); |
| | | tableInfo.monLevel = query.value(11).toString().toStdString(); |
| | | faceInfosCache.insert(std::make_pair(tableInfo.uuid, tableInfo)); |
| | | } |
| | | } |
| | |
| | | std::string uuid; |
| | | FaceFeature feature; |
| | | std::string faceUrl; |
| | | std::string feature_base64; |
| | | }; |
| | | |
| | | struct FaceInfo { |
| | |
| | | std::string sex; |
| | | std::string idCard; |
| | | std::string phoneNum; |
| | | std::string enable; |
| | | std::string monLevel; |
| | | }; |
| | | typedef std::vector<FaceInfo> FaceInfos; |
| | | typedef std::map<std::string, FaceInfo> FaceInfosCache; |
| | |
| | | |
| | | // |
| | | std::string getFacesFromTableSql(std::string tableName) { |
| | | // #todo get monLevel èåæ¥è¯¢ |
| | | std::string sql = |
| | | "select uuid,feature,create_time,faceUrl,del_flag,enabled from '" + tableName + |
| | | "_fea' where feature is not null "; |
| | |
| | | std::string sqlTemp = sql; |
| | | std::string sql2 = ") VALUES('"; |
| | | for (auto item : fieldValues) { |
| | | if (item.first.size() != 0) { |
| | | if (item.first.size() != 0 && item.second.size() != 0) { |
| | | sql.append(item.first + ","); |
| | | sql2.append(item.second + "','"); |
| | | } |
| | |
| | | sql.append("update_time DATETIME DEFAULT NULL,"); |
| | | sql.append("create_by varchar(255) DEFAULT NULL,"); |
| | | sql.append("del_flag INTEGER DEFAULT 0,"); |
| | | sql.append("monitorLevel varchar(255) DEFAULT 0,"); |
| | | sql.append(" enabled varchar(255) DEFAULT 1"); |
| | | sql.append(");"); |
| | | // 人è¸ç¹å¾è¡¨ |
| | |
| | | void initPerHub(); |
| | | |
| | | private: |
| | | ffmpeg::VideoCaptureElement videoCaptureElement; |
| | | YoloRpcElement yoloRpcElement; |
| | | FaceRpcElement faceRpcElement; |
| | | FaceExtractElement faceExtractElement; |
| | |
| | | ##jsonæä»¶æ¨¡æ¿ååæ°å«ä¹ |
| | | |
| | | { |
| | | "DEV_ID" : "DSVAD010120181119", |
| | | "clusterID" : "", |
| | | "webPort" : 11111, |
| | | "netIfName" : "enp3s0", |
| | | "localPasswd" : "123456", |
| | | "ES_IP" : "192.168.1.122", |
| | | "ES_PORT" : 9200, |
| | | "mainServerIp" : "192.168.1.182", |
| | | "mainServerPort" : "3697", |
| | | "mainServerrUrl" : "/addPerson/uploadToTemporary", |
| | | "TotalLoadSize" : "500", |
| | | "buildAddr" : "/home/bsk/Apps/QiaoJiaSystem/build/", |
| | | "cutPath" : "/home/bsk/work/qiaojia/cut", |
| | | "loadPath" : "/home/bsk/work/qiaojia/load", |
| | | "logPath" : "/home/bsk/work/log/", |
| | | "FaceDetectionSampleSize" : 720, |
| | | "FaceSeachSleepTime" : 60, |
| | | "encode_thread_num" : 3, |
| | | "erlCookie" : "123", |
| | | "erlFatherNode" : " ", |
| | | "erlNode" : "f6d7d984-858e-4235-a657-644927b3a628@192.168.1.148", |
| | | "erlPath" : "/opt/erlang/f6d7d984-858e-4235-a657-644927b3a628", |
| | | "redis_buf_len" : 750, |
| | | "redis_ip" : "127.0.0.1", |
| | | "srsAddr" : "rtmp://192.168.1.122:1934/live/" |
| | | "DEV_ID" : "DSVAD010120181119", |
| | | "clusterID" : "", |
| | | "webPort" : 11111, |
| | | "netIfName" : "enp3s0", |
| | | "localPasswd" : "123456", |
| | | "ES_IP" : "192.168.1.122", |
| | | "ES_PORT" : 9200, |
| | | "mainServerIp" : "192.168.1.182", |
| | | "mainServerPort" : "3697", |
| | | "mainServerrUrl" : "/addPerson/uploadToTemporary", |
| | | "addFromAnalyUrl":"192.168.1.182:3699/data/api-c/taskUser/addFromAnaly", |
| | | "updateFromAnalyUrl":"192.168.1.182::3699/data/api-c/taskUser/updateFromC", |
| | | "addTaskAnalyUrl":"192.168.1.182:3699/addTaskByNode", |
| | | "TotalLoadSize" : "500", |
| | | "buildAddr" : "/home/bsk/Apps/QiaoJiaSystem/build/", |
| | | "cutPath" : "/home/bsk/work/qiaojia/cut", |
| | | "loadPath" : "/home/bsk/work/qiaojia/load", |
| | | "logPath" : "/home/bsk/work/log/", |
| | | "FaceDetectionSampleSize" : 720, |
| | | "FaceSeachSleepTime" : 60, |
| | | "encode_thread_num" : 3, |
| | | "erlCookie" : "123", |
| | | "erlFatherNode" : " ", |
| | | "erlNode" : "f6d7d984-858e-4235-a657-644927b3a628@192.168.1.148", |
| | | "erlPath" : "/opt/erlang/f6d7d984-858e-4235-a657-644927b3a628", |
| | | "redis_buf_len" : 750, |
| | | "redis_ip" : "127.0.0.1", |
| | | "srsAddr" : "rtmp://192.168.1.122:1934/live/" |
| | | } |
| | | |
| | | ---- |
| | |
| | | |
| | | * mainServerrUrl |
| | | >人åä¸ä¼ çæ¥å£url |
| | | |
| | | * addFromAnalyUrl |
| | | >叿§äººåä¸ä¼ çæ¥å£url |
| | | |
| | | * updateFromAnalyUrl |
| | | >叿§äººåæ´æ°ä¸ä¼ çæ¥å£url |
| | | |
| | | * addTaskAnalyUrl |
| | | >é»åååºåºåå»ºåæ´æ°çä¸ä¼ æ¥å£url |
| | | --- |
| | | |
| | | --- |
| | |
| | | return false; |
| | | } |
| | | |
| | | bool ErlangTool::ErlangDbTool::addPerson(std::string t_tableName, AddFaceData &faceData, FieldValues &fieldValues) { |
| | | // #todo è®°å¾æµè¯ä¸æ |
| | | std::string strSql = getInsertSql(t_tableName, fieldValues); |
| | | fieldValues.clear(); |
| | | fieldValues.insert(make_pair("uuid", faceData.uuid)); |
| | | fieldValues.insert(make_pair("faceUrl", faceData.faceUrl)); |
| | | fieldValues.insert(make_pair("feature", faceData.feature_base64)); |
| | | |
| | | std::string strSqlFea = getInsertSql(t_tableName + "_fea", fieldValues); |
| | | strSql.append(strSqlFea); |
| | | // #todo è®°å¾æµè¯ä¸æ åªæäººåä¿¡æ¯è¡¨æ´æ°ï¼ç¹å¾æ´æ°ææ¶æ²¡å |
| | | |
| | | return getExecSqlResult(strSql); |
| | | } |
| | | |
| | | bool ErlangTool::ErlangDbTool::updatePerson(std::string t_tableName, AddFaceData &faceData, FieldValues &fieldValues) { |
| | | // #todo è®°å¾æµè¯ä¸æ |
| | | std::string strSql = getUpdateFaceTableSql(t_tableName, fieldValues); |
| | | // #todo è®°å¾æµè¯ä¸æ åªæäººåä¿¡æ¯è¡¨æ´æ°ï¼ç¹å¾æ´æ°ææ¶æ²¡å |
| | | fieldValues.clear(); |
| | | fieldValues.insert(make_pair("uuid", faceData.uuid)); |
| | | fieldValues.insert(make_pair("faceUrl", faceData.faceUrl)); |
| | | |
| | | fieldValues.insert(make_pair("feature", faceData.feature_base64)); |
| | | |
| | | std::string strSqlFea = getInsertSql(t_tableName + "_fea", fieldValues); |
| | | strSql.append(strSqlFea); |
| | | |
| | | return getExecSqlResult(strSql); |
| | | } |
| | |
| | | } |
| | | if (str_tableUuid.size() > 0) { |
| | | QString sql = QString::fromStdString( |
| | | "Select a.uuid as id ,a.faceUrl as img,a.feature,b.idCard as idcard,a.enable from '" + str_tableUuid + |
| | | "Select a.uuid as id ,a.faceUrl as img,a.feature,b.idCard as idcard,a.enable,a.monitorLevel from '" + str_tableUuid + |
| | | "_fea' as a ,'" + str_tableUuid + "' as b where a.uuid = b.uuid and ( a.del_flag=0 AND b.del_flag=0);"); |
| | | QSqlQuery query(g_syncDbFile); |
| | | query.prepare(sql); |
| | |
| | | t_feature_info.feature = query.value(2).toString().toStdString(); |
| | | t_feature_info.idcard = query.value(3).toString().toStdString(); |
| | | t_feature_info.enable = query.value(4).toString().toStdString(); |
| | | t_feature_info.monLevel = query.value(5).toString().toStdString(); |
| | | |
| | | dataCache.insert(std::make_pair(t_feature_info.id, t_feature_info)); |
| | | } |
| | |
| | | } |
| | | if (str_tableUuid.size() > 0) { |
| | | QString sql = QString::fromStdString( |
| | | "Select b.uuid as id,b.faceUrl as img,a.idCard as idcard,a.enable from '" + str_tableUuid + "' as a, '" + |
| | | str_tableUuid + "_fea' As b where a.uuid = b.uuid and ( a.del_flag=0 AND b.del_flag=0);"); |
| | | "Select b.uuid as id,b.faceUrl as img,a.idCard as idcard,a.enable,a.monitorLevel from '" + str_tableUuid + |
| | | "' as a, '" + str_tableUuid + "_fea' As b where a.uuid = b.uuid and ( a.del_flag=0 AND b.del_flag=0);"); |
| | | QSqlQuery query(g_syncDbFile); |
| | | query.prepare(sql); |
| | | if (!query.exec()) { |
| | |
| | | t_feature_info.img = query.value(1).toString().toStdString(); |
| | | t_feature_info.idcard = query.value(2).toString().toStdString(); |
| | | t_feature_info.enable = query.value(3).toString().toStdString(); |
| | | t_feature_info.monLevel = query.value(4).toString().toStdString(); |
| | | |
| | | dataCache.insert(std::make_pair(t_feature_info.id, t_feature_info)); |
| | | } |
| | |
| | | std::string IdCard = " ", std::string PersonName = " ", std::string Age = " ", |
| | | std::string Sex = " ", std::string PhoneNum = " "); |
| | | |
| | | bool |
| | | ErlangTool::ErlangDbTool::addPerson(std::string t_tableName, AddFaceData &faceData, FieldValues &fieldValues); |
| | | |
| | | bool updatePerson(std::string t_tableName, AddFaceData &faceData, FieldValues &fieldValues); |
| | | |
| | | vec_AddDataCache addPersons(std::string TableUuid, std::vector<SyncDB::AddPersonInfo> &tmpPer); |
| | |
| | | img, |
| | | idcard, |
| | | enable, |
| | | monLevel, |
| | | evEnd |
| | | }; |
| | | |
| | |
| | | map_Fea_InfoString2Values["img"] = Feature_InfoStringValue::img; |
| | | map_Fea_InfoString2Values["idcard"] = Feature_InfoStringValue::idcard; |
| | | map_Fea_InfoString2Values["enable"] = Feature_InfoStringValue::enable; |
| | | map_Fea_InfoString2Values["monitorLevel"] = Feature_InfoStringValue::monLevel; |
| | | map_Fea_InfoString2Values["end"] = evEnd; |
| | | } |
| | | |
| | |
| | | case Feature_InfoStringValue::enable: |
| | | enable = value; |
| | | break; |
| | | case Feature_InfoStringValue::monLevel: |
| | | monLevel = value; |
| | | break; |
| | | default: |
| | | ERR(key << " is an invalid string. s_mapStringValues now contains " |
| | | << map_Fea_InfoString2Values.size() << " entries."); |
| | |
| | | std::string img; |
| | | std::string idcard; |
| | | std::string enable; |
| | | std::string monLevel; |
| | | |
| | | |
| | | // value is a atom: atomSize:19, atomValue:test@192.168.50.216 |