From 4d1c2ee860222138fc7932225ea6d91e7483646a Mon Sep 17 00:00:00 2001 From: pansen <pansen626@sina.com> Date: 星期一, 22 四月 2019 11:18:45 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/1.3nsq' into 1.3nsq --- QiaoJiaSystem/VptServer/CMakeLists.txt | 3 QiaoJiaSystem/build/killAll.sh | 0 QiaoJiaSystem/VideoServer/QiaoJia/DB/DBStruct.h | 2 QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp | 36 + QiaoJiaSystem/StructureApp/PerimeterElement.cpp | 187 +++++----- QiaoJiaSystem/build/FaceSearchServer | 0 QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp | 57 +- QiaoJiaSystem/FaceDetectServer/FaceDetectServerI.h | 8 QiaoJiaSystem/build/config.json | 48 +- QiaoJiaSystem/build/syncDBClient | 0 syncDBTool/ErlangDbTool.cpp | 3 QiaoJiaSystem/VideoAnalysFromHC/main.cpp | 17 QiaoJiaSystem/DataManagerServer/vss/controller/CamDevController.h | 33 + QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp | 27 + QiaoJiaSystem/build/DataWebServer | 0 QiaoJiaSystem/DataManagerServer/demo.cpp | 4 QiaoJiaSystem/RapidStructureApp/TriggerElement.cpp | 10 QiaoJiaSystem/StructureApp/PerimeterElement.h | 7 QiaoJiaSystem/FaceDetectServer/FaceExtractServerI.cpp | 1 QiaoJiaSystem/StructureApp/main.cpp | 17 QiaoJiaSystem/FaceDetectServer/main_extract.cpp | 3 QiaoJiaSystem/LocalDBTool/SqliteToolkit.hpp | 6 QiaoJiaSystem/build/YoloServer | 0 QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.h | 2 QiaoJiaSystem/build/YoloDetectClientTest | 0 QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp | 86 ++-- QiaoJiaSystem/build/FaceDetectServer | 0 QiaoJiaSystem/StructureApp/FaceRpcElement.cpp | 6 QiaoJiaSystem/StructureApp/VptRpcElement.cpp | 44 +- QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.cpp | 56 ++- QiaoJiaSystem/StructureApp/AppPipeController.cpp | 8 QiaoJiaSystem/build/FaceDetectResourcesTest | 0 QiaoJiaSystem/VptServer/VptDetectWrapper.cpp | 113 +++-- QiaoJiaSystem/build/FaceExtractServer | 0 QiaoJiaSystem/DataManagerServer/http_configserver.cpp | 45 + QiaoJiaSystem/FaceDetectServer/main_detect.cpp | 3 QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.h | 45 ++ QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp | 2 QiaoJiaSystem/build/VideoAnalysFromHC | 0 QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h | 2 QiaoJiaSystem/StructureApp/CMakeLists.txt | 1 QiaoJiaSystem/VideoToImageMulth/RtspImageRedis.cpp | 6 QiaoJiaSystem/DataManagerServer/http_configserver.h | 78 ++++ QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp | 32 - QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.h | 25 + QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp | 24 - QiaoJiaSystem/StructureApp/FaceExtractElement.cpp | 12 47 files changed, 658 insertions(+), 401 deletions(-) diff --git a/QiaoJiaSystem/DataManagerServer/demo.cpp b/QiaoJiaSystem/DataManagerServer/demo.cpp index 6a83272..1a0073b 100644 --- a/QiaoJiaSystem/DataManagerServer/demo.cpp +++ b/QiaoJiaSystem/DataManagerServer/demo.cpp @@ -14,8 +14,8 @@ std::string publish_basepath = "rtmp://localhost:1934/live/cam" + std::to_string(554); appPref.setIntData("gpu.index", 0); appPref.setStringData("publish.basepath", publish_basepath); - appPref.setIntData("pulish.width", 640); - appPref.setIntData("pulish.height", 360); +// appPref.setIntData("pulish.width", 640); +// appPref.setIntData("pulish.height", 360); AppPipeController a(0, json); a.start(); diff --git a/QiaoJiaSystem/DataManagerServer/http_configserver.cpp b/QiaoJiaSystem/DataManagerServer/http_configserver.cpp index e6b8e72..4e61e33 100644 --- a/QiaoJiaSystem/DataManagerServer/http_configserver.cpp +++ b/QiaoJiaSystem/DataManagerServer/http_configserver.cpp @@ -262,6 +262,8 @@ VssDomainUnitTblController::instance()->registerHttpServices(_HttpSrvRetRecieve); VssLocalSettingTblController::instance()->registerHttpServices(_HttpSrvRetRecieve); CamDevController::instance()->registerHttpServices(_HttpSrvRetRecieve); + //todo + CamDevController::instance()->nsqMsgProducerSet(nsqMsgProducer); VssUpperSvrTblController::instance()->registerHttpServices(_HttpSrvRetRecieve); @@ -1164,11 +1166,11 @@ std::string brand) const { if (brand == "haikang") { - bool ret = getHKDevSerialNumber(ip.c_str(), port, username.c_str(), passwd.c_str()); - if (!ret) { - ERR("getHKDevSerialNumber ERR"); - return false; - } +// bool ret = getHKDevSerialNumber(ip.c_str(), port, username.c_str(), passwd.c_str()); +// if (!ret) { +// ERR("getHKDevSerialNumber ERR"); +// return false; +// } //璋冪敤rtsp娴乺tsp://admin:a1234567@192.168.1.215:554/h264/ch1/main/av_stream port = 554;//TODO // std::string rtsp_url = "rtsp://" + username + ":" + passwd + "@" + ip + ":" + std::to_string(port) + @@ -1218,11 +1220,11 @@ return false;//TODO } else if (brand == "yushi") { // rtsp://admin:admin@192.168.8.8:554/video1 - bool ret = getUVDevSerialNumber(ip.c_str(), username.c_str(), passwd.c_str()); - if (!ret) { - ERR("getUVDevSerialNumber ERR"); - return false; - } +// bool ret = getUVDevSerialNumber(ip.c_str(), username.c_str(), passwd.c_str()); +// if (!ret) { +// ERR("getUVDevSerialNumber ERR"); +// return false; +// } port = 554; // std::string rtsp_url = "rtsp://" + username + ":" + passwd + "@" + ip + ":" + std::to_string(port) + @@ -2140,9 +2142,12 @@ // auto resType = erlangDbTool->findAllTypeInfo(); string json = "["; for (auto &item : resDB) { + //-------------------maybe delete ?------------------------ if (item.second.tableName.find("lt_") == 0) { continue; } + //-------------------maybe delete end---------------------- + string subJson = "{ "; subJson.append("\"uuid\":\"" + item.second.uuid + "\","); subJson.append("\"tableName\":\"" + item.second.tableName + "\","); @@ -3027,8 +3032,19 @@ } } - if (videoStVec.size() >= 1) { - std::string strVideoName = strPath + videoStVec[0].ToVideoName(); + std::vector<VideoName_s_t> videoStVec_; + auto imgTm_ = AppUtil::ParseFromHypenTimeStr(imgSt.m_timeStamp); + for (auto &item : videoStVec) { + auto resTime_ = AppUtil::ParseFromHypenTimeStr(item.m_timeStamp); + auto timeRes = difftime(mktime(&resTime_), mktime(&imgTm_)); + if ((timeRes < 0 && difftime(mktime(&imgTm_), mktime(&resTime_)) >= 30) || (timeRes / 60 >= 3)) { + continue; + } + videoStVec_.emplace_back(item); + } + + if (videoStVec_.size() >= 1) { + std::string strVideoName = strPath + videoStVec_[0].ToVideoName(); INFO("ImageName: " << imgKey << " SingleMatchVideo: " << strVideoName); return strVideoName; } else { @@ -3333,6 +3349,10 @@ rule.strExAreas = value["strExAreas"].asCString(); rule.strLine = value["strLine"].asCString(); rule.strExLine = value["strExLine"].asCString(); + + if (!value["strPerimeterObjType"].empty()) { + rule.strPerimeterObjType = value["strPerimeterObjType"].asCString(); + } if (rule.strCamId.isEmpty()) { return "{\"ret_status\":\"鍐呭鏈夎锛岃妫�鏌ワ紒\"}"; } @@ -3409,6 +3429,7 @@ obj["strExAreas"] = rule.second.strExAreas.toStdString(); obj["strLine"] = rule.second.strLine.toStdString(); obj["strExLine"] = rule.second.strExLine.toStdString(); + obj["strPerimeterObjType"] = rule.second.strPerimeterObjType.toStdString(); Json::Value weekRuleArray; diff --git a/QiaoJiaSystem/DataManagerServer/http_configserver.h b/QiaoJiaSystem/DataManagerServer/http_configserver.h index 00fff1c..98399e4 100644 --- a/QiaoJiaSystem/DataManagerServer/http_configserver.h +++ b/QiaoJiaSystem/DataManagerServer/http_configserver.h @@ -121,7 +121,7 @@ std::string createDatabase(std::string ip, unsigned int port, std::string content, PResponse &response); /** - * + * 鍒犻櫎鏁版嵁 搴曞簱 * @param ip * @param port * @param content @@ -130,23 +130,97 @@ */ std::string deleteDatabase(std::string ip, unsigned int port, std::string content, PResponse &response); + /*** + * 鏇存柊鏁版嵁 搴曞簱 + * @param ip + * @param port + * @param content + * @param response + * @return + */ std::string updateDatabase(std::string ip, unsigned int port, std::string content, PResponse &response); + /** + * 鏌ヨ鎵�鏈夊悓姝ュ簱 + * @param ip + * @param port + * @param content + * @param response + * @return + */ std::string findAllDatabase(std::string ip, unsigned int port, std::string content, PResponse &response); + /** + * 鏌ヨ鎵�鏈夋湰鍦板簱 + * @param ip + * @param port + * @param content + * @param response + * @return + */ std::string findLocalDatabase(std::string ip, unsigned int port, std::string content, PResponse &response); + /*** + * 涓婁紶浜哄憳 + * @param ip + * @param port + * @param content + * @param response + * @return + */ std::string addPerson(std::string ip, unsigned int port, std::string content, PResponse &response); + //#todo 鎵归噺娣诲姞浜哄憳鍊熷彛 + + /*** + * 鍚戝悓姝ュ簱鎵归噺娣诲姞浜哄憳鍙婃洿鏂颁汉鍛� + * feature_addPersonTracking 鍒嗘敮涓洿鏂板姛鑳藉垎绂讳负鏂板�熷彛 + * @param ip + * @param port + * @param content + * @param response + * @return + */ std::string addPersons(std::string ip, unsigned int port, std::string content, PResponse &response); + /*** + * 鍒ゆ柇鍚屾搴撲腑浜哄憳鏄惁瀛樺湪 + * @param ip + * @param port + * @param content + * @param response + * @return + */ std::string personIsExists(std::string ip, unsigned int port, std::string content, PResponse &response); + /** + * 鏇存柊鍚屾搴撲腑鐨勪汉鍛� + * @param ip + * @param port + * @param content + * @param response + * @return + */ std::string updatePersonByOldId(std::string ip, unsigned int port, std::string content, PResponse &response); - + /** + * 鍒犻櫎浜哄憳 + * @param ip + * @param port + * @param content + * @param response + * @return + */ std::string delPerson(std::string ip, unsigned int port, std::string content, PResponse &response); + /** + * 鍔犺浇鐗瑰緛 + * @param ip + * @param port + * @param content + * @param response + * @return + */ std::string loadFaceFeaData(std::string ip, unsigned int port, std::string content, PResponse &response); diff --git a/QiaoJiaSystem/DataManagerServer/vss/controller/CamDevController.h b/QiaoJiaSystem/DataManagerServer/vss/controller/CamDevController.h index 22aa644..2656b88 100755 --- a/QiaoJiaSystem/DataManagerServer/vss/controller/CamDevController.h +++ b/QiaoJiaSystem/DataManagerServer/vss/controller/CamDevController.h @@ -8,6 +8,7 @@ #include "vss/model/CamDev.h" #include "VssBaseController.h" #include <mysql++.h> +#include <NsqMsgTool.hpp> using namespace std; @@ -24,6 +25,14 @@ static CamDevController *instance() { static CamDevController instance; return &instance; + } + +private: + //shared_ptr + BasicMsg::Nsq::NsqMsgProducer *_nsqMsgProducer; +public: + void nsqMsgProducerSet(BasicMsg::Nsq::NsqMsgProducer *nsqMsgProducer){ + _nsqMsgProducer = nsqMsgProducer; } public: @@ -163,6 +172,18 @@ } } + + { + std::string topic = "VideoToImageMulth"; + std::string topic1 = "VideoAnalysFromHC"; + Json::Value json_cfg; + json_cfg["cam_del"] = content; + std::string msg = json_cfg.toStyledString(); + DBG("msg:" << msg); + _nsqMsgProducer->Publish(topic, (void *) (&msg)); + _nsqMsgProducer->Publish(topic1, (void *) (&msg)); + } + return responseJsonValue.toStyledString(); } @@ -245,6 +266,18 @@ idJsonValue.asString()); } } + + { + std::string topic = "VideoToImageMulth"; + std::string topic1 = "VideoAnalysFromHC"; + Json::Value json_cfg; + json_cfg["cam_edit"] = content; + std::string msg = json_cfg.toStyledString(); + DBG("msg:" << msg); + _nsqMsgProducer->Publish(topic, (void *) (&msg)); + _nsqMsgProducer->Publish(topic1, (void *) (&msg)); + } + return responseJsonValue.toStyledString(); } diff --git a/QiaoJiaSystem/FaceDetectServer/FaceDetectServerI.h b/QiaoJiaSystem/FaceDetectServer/FaceDetectServerI.h index 09dfe1a..fed2cdb 100644 --- a/QiaoJiaSystem/FaceDetectServer/FaceDetectServerI.h +++ b/QiaoJiaSystem/FaceDetectServer/FaceDetectServerI.h @@ -10,6 +10,10 @@ ~FaceDetectServerI(); // FaceDetectServer interface public: + /** + * 浜鸿劯妫�娴� + * @return + */ virtual FaceDetect::Faces faceDetect(Ice::Int, Ice::Int, const std::string &, const Ice::Current &) override; private: @@ -19,6 +23,10 @@ // FaceDetectServer interface public: + /** + * 浜鸿劯浜屾灞炴�ф彁鍙� + * @return + */ virtual FaceDetect::ThftResult faceProperty(Ice::Int, Ice::Int, const FaceDetect::FacePos &, const std::string &, const Ice::Current &) override; private: diff --git a/QiaoJiaSystem/FaceDetectServer/FaceExtractServerI.cpp b/QiaoJiaSystem/FaceDetectServer/FaceExtractServerI.cpp index 0485c6a..c8918da 100644 --- a/QiaoJiaSystem/FaceDetectServer/FaceExtractServerI.cpp +++ b/QiaoJiaSystem/FaceDetectServer/FaceExtractServerI.cpp @@ -50,5 +50,6 @@ ERR("shareMemory attach faild"); // throw std::runtime_error("shareMemory attach faild"); } + return feature; } diff --git a/QiaoJiaSystem/FaceDetectServer/main_detect.cpp b/QiaoJiaSystem/FaceDetectServer/main_detect.cpp index bf9f733..7fdaea5 100644 --- a/QiaoJiaSystem/FaceDetectServer/main_detect.cpp +++ b/QiaoJiaSystem/FaceDetectServer/main_detect.cpp @@ -57,7 +57,8 @@ IceRpcServer<FaceDetectServerI> server("faceServer", appPref.getIntData("RpcFDPort"), "tcp"); server.setMessageSizeMax(1024 * 1024 * 50); server.setPoolInitSize(appPref.getIntData("thread.max")); - server.setPoolMaxSize(appPref.getIntData("thread.max")); + DBG("MaxPoolSize: " << std::max(appPref.getIntData("thread.max")*2, 32)); + server.setPoolMaxSize(std::max(appPref.getIntData("thread.max")*2, 32)); server.runWaitShutDown(); return 0; } diff --git a/QiaoJiaSystem/FaceDetectServer/main_extract.cpp b/QiaoJiaSystem/FaceDetectServer/main_extract.cpp index 712f421..10046ca 100644 --- a/QiaoJiaSystem/FaceDetectServer/main_extract.cpp +++ b/QiaoJiaSystem/FaceDetectServer/main_extract.cpp @@ -58,7 +58,8 @@ IceRpcServer<FaceExtractServerI> server("faceExtractServer", appPref.getIntData("RpcFEPort"), "tcp"); server.setMessageSizeMax(1024 * 1024 * 50); server.setPoolInitSize(appPref.getIntData("thread.max")); - server.setPoolMaxSize(appPref.getIntData("thread.max")); + DBG("MaxPoolSize: " << std::max(appPref.getIntData("thread.max")*2, 32)); + server.setPoolMaxSize(std::max(appPref.getIntData("thread.max")*2, 32)); server.runWaitShutDown(); return 0; } diff --git a/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp b/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp index 1c7ca29..3281d1c 100644 --- a/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp +++ b/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp @@ -62,6 +62,7 @@ DBG("m_dbRWLocks ok"); m_dbRWLocks_Lock.unlock(); // ClockTimer clockTimer("compare "); + //淇濇姢 t_compareResults RWLock t_rwLock; m_rwLock.rdlock(); @@ -80,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()); } @@ -123,6 +127,7 @@ auto &t_topResult = topResult[key]; DBG("topResult[key] ok"); t_topResult.clear(); + // 瀵规瘮缁撴灉杞崲 for (auto &item : t_compareResults) { auto &it = item.second; //#todo @@ -203,16 +208,8 @@ 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 mymap = m_erlangDbTool->loadFaceFeaData(m_tableName); DBG(m_tableName << " db size is " << mymap.size()); @@ -231,29 +228,10 @@ test.enabled = it.enable; test.monLevel = it.monLevel; } -// //#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()); -// string str2; -// str2 = base64.Decode(ft.data(), ft.length()); -// 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; -// test.features.push_back(t_fea); -// test.faceUrl = imgUrl; -// test.idcard = strIdCard; -// } } catch (const std::exception &e) { printf("Exception:%s\n", e.what()); -// BISTL::shared_memory_object::remove(m_tableName.c_str()); } appPref.setIntData(m_tableName, 1); -// BISTL::shared_memory_object::remove(m_tableName.c_str()); } else { //#todo get sqlite3 data m_tableName = t_json["tableName"].asCString(); diff --git a/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.h b/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.h index 0667bbf..6ec4fae 100644 --- a/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.h +++ b/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.h @@ -21,19 +21,35 @@ public: FaceDBCompareServer(); + /** + * 鏈湴搴撴瀯閫� + */ FaceDBCompareServer(SqliteFaceEncap *); + /*** + * 鍚屾搴撴瀯閫� + */ FaceDBCompareServer(ErlangTool::ErlangDbTool *); ~FaceDBCompareServer(); virtual bool compare(std::thread::id key, AlarmData *alarmData, int topN); + /*** + * @deprecated + * @param key + * @param alarmData + * @return + */ bool compare(std::thread::id key, AlarmData *alarmData); FaceResults getTopResult(std::thread::id key); private: + /** + * 鍔犺浇鐗瑰緛 + * @param str_config + */ virtual void loadDBData(std::string str_config); protected: @@ -41,10 +57,14 @@ std::string m_tableName; int fea_size; + // 淇濇姢鐖剁被鐨刣ataMap RWLock m_rwLock; std::mutex topResultMtx; std::map<std::thread::id, FaceResults> topResult; + + // 淇濇姢m_dbRWLocks RWLock m_dbRWLocks_Lock; + // 淇濇姢 topResult std::map<std::thread::id, RWLock> m_dbRWLocks; ErlangTool::ErlangDbTool *m_erlangDbTool; @@ -54,8 +74,9 @@ static bool getRet(std::string startTime, std::string endTime) { auto crrentTime = AppUtil::getTimeSecString(); - - if (crrentTime.compare(startTime) > 0 && (crrentTime.compare(endTime) < 0 || endTime == "0000-00-00 00:00:00")) { + // 鏍规嵁褰撳墠鏃堕棿鏄惁鍦ㄨ缃殑鏃堕棿鍐呮垨姘镐箙鐢熸晥 + if (crrentTime.compare(startTime) > 0 && (crrentTime.compare(endTime) < 0 + || endTime == "0000-00-00 00:00:00")) { return true; } return false; 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 diff --git a/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.h b/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.h index 7a1c16b..8a70b5c 100644 --- a/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.h +++ b/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.h @@ -24,6 +24,8 @@ //}; static bool t_live_ret = true; + +//鍏ㄥ眬鐨勪俊鍙烽噺锛屽鏋滄暟鎹埛鏂板欢杩熻繃楂樺彲浠ユ敼涓轰娇鐢╪sq娑堟伅闃熷垪銆� static pthread_cond_t func_cond(PTHREAD_COND_INITIALIZER); static pthread_mutex_t func_cond_mutex(PTHREAD_MUTEX_INITIALIZER); @@ -39,44 +41,71 @@ virtual ~FaceFeatureSearchServerI(); public: + /** + * @deprecated + * @return + */ virtual ::FaceSearch::FaceResults faceSearchMax(const ::FaceSearch::Data &, const ::std::string &, const ::Ice::Current & = ::Ice::emptyCurrent); + /*** + * 瀵规瘮鑾峰彇绗琻澶х殑浜哄憳 + * @return + */ virtual ::FaceSearch::FaceResults faceSearchTopN(const ::FaceSearch::Data &, const ::std::string &, ::Ice::Int, ::Ice::Float, const ::Ice::Current & = ::Ice::emptyCurrent); private: + /** + * @deprecated + * @param nodeName + * @param cookie + * @return + */ bool initErlang(std::string nodeName, std::string cookie); - //#todo delete cache //#todo loadData + /** + * 鍔犺浇浜鸿劯灞炴�� + * @param faceFea + * @return + */ static bool loadFeatureData(FaceFeatureSearchServerI *faceFea); + /** + * 鏁版嵁鏇存柊绾跨▼锛屾湁淇″彿瑙﹀彂鎵嶄細鏇存柊 + * @param faceFea + */ static void dataUpdate(FaceFeatureSearchServerI *faceFea); + /*** + * 绛夊緟搴曞簱琛ㄥ姞杞芥垚鍔� + * @param faceFea + * @param loop + */ static void waitTables(FaceFeatureSearchServerI *faceFea, int loop = -1); - -// void erlangCallBackFunc(std::string); private: long m_inTime; + // 鐗瑰緛瀵规瘮绫� std::map<std::string, FaceDBCompareServer *> m_faceFCMAP; + // 搴曞簱绫诲瀷锛岀敓鏁堟椂闂寸瓑 std::map<std::string, TableInfo> m_tableType; + // 瀵� m_faceFCMAP 鍔犺鍐欓攣 + // 褰撳姣旀椂锛屾暟鎹埛鏂颁細绛夊緟 RWLock m_rwLock; + ErlangTool::ErlangDbTool m_erlangDbTool; + SqliteFaceEncap m_sqliteFaceEncap; + std::mutex m_mutex; bool m_retUpdatePthread; Base64 base64; -// Ice::ObjectPrx base_FaceMemoryData; -// IceRpcClient<::FaceSearch::FaceMemoryDataPrx> m_faceMemoryClient; -// ::FaceSearch::FaceMemoryDataPrx serverFaceMemoryData; - -// func_cond_mutex(PTHREAD_MUTEX_INITIALIZER), func_cond(PTHREAD_COND_INITIALIZER) EsDBTool pManagerEsDB;//(appPref.getStringData("ipAdd"), appPref.getIntData("ipPort")); }; diff --git a/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp b/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp index f1386f5..7787821 100644 --- a/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp +++ b/QiaoJiaSystem/GB28181DecoderModel/FFmpegDecoderJPG.cpp @@ -5,7 +5,6 @@ #include <zconf.h> #include <opencv2/opencv.hpp> #include "FFmpegDecoderJPG.h" -#include <cstring> void BASICGB28181::initFFmpeg() { av_register_all(); @@ -280,19 +279,9 @@ // BASICGB28181::avframe_to_cvmat(frame).copyTo(p_this->m_image); p_this->m_image = std::move(BASICGB28181::avframe_to_cvmat(p_this->frame)); if(p_this->m_image.empty()) { - ERR("camID:" << p_this->m_camIdx << " frameW:" << p_this->frame->width << "frame.data.len" << strlen(p_this->frame->data[0])); + ERR("camID:" << p_this->m_camIdx << " frameW:" << p_this->frame->width); continue; } -// else { -// static int count =0; -// count ++; -// if(count > 100){ -// ERR("camID:" << p_this->m_camIdx << " cols:" << p_this->m_image.cols <<\ -// " rows:" << p_this->m_image.rows << " channels:" << p_this->m_image.channels()); -// count = 0; -// } -// -// } // 灏唅甯т繚瀛樹负蹇収 if (p_this->m_SnapshotNotSaveRet && (p_this->pkt.flags & AV_PKT_FLAG_KEY)) { try { @@ -332,7 +321,6 @@ #endif //瑙﹀彂涓婂眰淇″彿 gSignalLock.emitSigal(p_this->m_camIdx + "DecoderImageOK"); -// DBG("emitSigal: " << p_this->m_camIdx); //#ifdef TestCode // DBG("emitSigal(\"DecoderImageOK\") after"); //#endif @@ -385,7 +373,7 @@ bool BASICGB28181::FFmpegDecoderJPG::stopThd() { TryCath( - DBG(m_camIdx << " FFmpegDecoderJPG stopThd ... " << m_camIdx); + DBG("FFmpegDecoderJPG stopThd ... " << m_camIdx); m_running = false; ); return true; @@ -450,7 +438,7 @@ if (!m_packetsVec.empty()) { auto iter = m_packetsVec.begin(); while (iter->m_frameId < lastFrameId) { - INFO("DropFrame: " << iter->m_frameId); +// INFO("DropFrame: " << iter->m_frameId); delete iter->m_packet.data; iter = m_packetsVec.erase(iter); } @@ -480,7 +468,7 @@ bool BASICGB28181::FFmpegDecoderJPG::SaveVideo(std::string path, int64_t lastFrameId) { std::lock_guard<std::mutex> lock(g_mutex); - INFO("SaveVideo: " << path << "m_packetsVec.size : " << m_packetsVec.size()); +// INFO("SaveVideo: " << path << "m_packetsVec.size : " << m_packetsVec.size()); if (!m_packetsVec.empty()) { startWrite(path.c_str()); int64_t firstKeyFramePts = m_packetsVec[0].m_packet.pts; @@ -488,7 +476,7 @@ unsigned long int frame_index = 0; for (const auto &item:m_packetsVec) { if (item.m_frameId < lastFrameId) { - DBG("item.m_frameId < lastFrameId " << item.m_frameId << " " << lastFrameId); +// DBG("item.m_frameId < lastFrameId " << item.m_frameId << " " << lastFrameId); conversion(const_cast<AVPacket *> (&item.m_packet), firstKeyFramePts, firstKeyFrameDts, video_st, frame_index); frame_index++; @@ -634,7 +622,7 @@ AVPacket *pkg = static_cast<AVPacket *>(packet); - DBG("frame_index==%d\n" << frame_index); +// DBG("frame_index==\n" << frame_index); //Write PTS AVRational time_base1 = inStream->time_base; //Duration between 2 frames (us) diff --git a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp index fdd97a4..cedc675 100644 --- a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp +++ b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp @@ -49,40 +49,52 @@ DBG("waitSignal(\"DecoderImageOK\") begin"); #endif //绛夊緟淇″彿瑙﹀彂 -// DBG("waitSignal before: " << p_this->m_chanPubID); gSignalLock.waitSignal(p_this->m_chanPubID + "DecoderImageOK"); -// DBG("waitSignal: " << p_this->m_chanPubID); #ifdef TestCode DBG("waitSignal(\"DecoderImageOK\") after"); #endif + { + if (p_this->m_publishVideoRet) { + if (p_this->videoPublishElement == nullptr) { + string path = appConfig.getStringProperty("srsAddr") + "cam" + p_this->m_chanPubID + ".flv"; + cv::Size size_(appConfig.getIntProperty("pulish.width"), appConfig.getIntProperty("pulish.height")); + int gupIdx = appPref.getIntData("gpu.index"); + DBG("videoPublishpath: " << p_this->m_chanPubID << path << " h:" << size_.height); + p_this->videoPublishElement = new ffmpeg::VideoPublishElement(path, size_, "flv", 25, gupIdx); + p_this->videoPublishElement->start(); + } else { +// DBG("videoPublishElement->setImage() : " << p_this->m_chanPubID); + if (!p_this->m_image.empty()) { + p_this->videoPublishElement->setImage(p_this->m_image); + } else { + ERR("m_image.empty()"); + } + } + } else { + if (p_this->videoPublishElement != nullptr) { + DBG("videoPublishElement->stop() :" << p_this->m_chanPubID); + p_this->videoPublishElement->stop(); + p_this->videoPublishElement->wait(); + delete p_this->videoPublishElement; + p_this->videoPublishElement = nullptr; + }else{ +// DBG("videoPublishElement null :" << p_this->m_chanPubID); + } + } + } + /****褰曞儚妯″潡浠g爜*****/ + p_this->m_picCount++; + //鍑犲紶閫変竴寮犳斁鍏edis + if (p_this->m_picCount % m_nPicsPickOne != 0) { + continue; + } else { + p_this->m_picCount.store(0); + } // 浠巉fmpeg瑙g爜绫讳腑鑾峰彇鍥剧墖 p_this->m_fFmpegDecoderJPG.getImage().copyTo(p_this->m_image); - /****debug*****///todo - if (p_this->m_image.empty()) { - ERR("camID:" << p_this->m_chanPubID); - continue; - } -// else { -// static int count =0; -// count ++; -// if(count > 100){ -// ERR("camID:" << p_this->m_chanPubID << " cols:" << p_this->m_image.cols <<\ -// " rows:" << p_this->m_image.rows << " channels:" << p_this->m_image.channels()); -// count = 0; -// } -// } - { - /****褰曞儚妯″潡浠g爜*****/ - p_this->m_picCount++; - //鍑犲紶閫変竴寮犳斁鍏edis - if (p_this->m_picCount % m_nPicsPickOne != 0) { - continue; - } else { - p_this->m_picCount.store(0); - } cv::Mat copyMat; std::string imageName = p_this->m_fFmpegDecoderJPG.GetImageName(); p_this->m_image.copyTo(copyMat); @@ -142,19 +154,19 @@ } else { // 鏍规嵁reopenTime鍒ゆ柇鏄惁闇�瑕侀噸鍚� - if (reopenTime < 0) { + if (p_this->reopenTime < 0) { p_this->m_running = false; stop(); INFO("grabFrame faild, element stopping"); - break; } else { //todo 涓氬姟姝婚攣 - usleep((6 - reopenTime--) * 1000000); - INFO("grabFrame faild, try reopen video: "); + usleep((6 - p_this->reopenTime--) * 1000000); + INFO("grabFrame faild, try reopen video, reopenTime:" << p_this->reopenTime); //鍏抽棴ffmpeg瑙g爜妯″潡 p_this->m_fFmpegDecoderJPG.stopThd(); //鍚姩ffmpeg瑙g爜妯″潡 + DBG("m_chanPubID:"<<p_this->m_chanPubID << " m_fps:" << p_this->m_fps); p_this->m_fFmpegDecoderJPG.startThd(p_this->m_chanPubID, p_this->m_fps, p_this->m_gpuIdx); continue; } @@ -223,20 +235,6 @@ void BASICGB28181::VideoCaptureElementWithRtp::threadFunc() { - if (m_publishVideoRet) { - if (videoPublishElement == nullptr) { - string path = appConfig.getStringProperty("srsAddr") + "cam" + m_chanPubID + ".flv"; - cv::Size size_(appConfig.getIntProperty("pulish.width"), appConfig.getIntProperty("pulish.height")); - int gupIdx = appPref.getIntData("gpu.index"); - videoPublishElement = new ffmpeg::VideoPublishElement(path, size_, "flv", 25, gupIdx); - } else { - videoPublishElement->stop(); - videoPublishElement->wait(); - delete videoPublishElement; - videoPublishElement = nullptr; - } - } - fireConnectors(); } @@ -261,7 +259,7 @@ void BASICGB28181::VideoCaptureElementWithRtp::SaveVideo(const std::string &strImageName) { - INFO("SaveVideo: " << strImageName); +// INFO("SaveVideo: " << strImageName); std::string strTimeStamp = AppUtil::getTimeUSecString(); std::string strPath = MakeDir(strTimeStamp); m_fFmpegDecoderJPG.SaveVideoByImageName(strPath, strImageName); diff --git a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h index 1eaf254..8e0a92c 100644 --- a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h +++ b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.h @@ -78,7 +78,7 @@ //鐢ㄦ潵淇濆瓨褰曞儚瑙嗛鐨勮矾寰� std::string m_cutPath; std::atomic<bool> m_publishVideoRet{false}; - ffmpeg::VideoPublishElement * videoPublishElement; + ffmpeg::VideoPublishElement * videoPublishElement{nullptr}; private: /*** * 鍚姩瀹炴椂娴佹帴鏀舵暟鎹嚎绋� diff --git a/QiaoJiaSystem/LocalDBTool/SqliteToolkit.hpp b/QiaoJiaSystem/LocalDBTool/SqliteToolkit.hpp index 9c893a7..5710c71 100644 --- a/QiaoJiaSystem/LocalDBTool/SqliteToolkit.hpp +++ b/QiaoJiaSystem/LocalDBTool/SqliteToolkit.hpp @@ -273,6 +273,10 @@ return "tableName is NULL"; } // 浜哄憳淇℃伅琛� + //ALTER TABLE '0cd82a8b-5285-5737-ab19-8c07247c797e' ADD COLUMN uploadFlag varchar(255) DEFAULT 0; + //ALTER TABLE '0cd82a8b-5285-5737-ab19-8c07247c797e' ADD COLUMN cmpThreshold varchar(255) DEFAULT 60; + //ALTER TABLE '0cd82a8b-5285-5737-ab19-8c07247c797e' ADD COLUMN enabled varchar(255) DEFAULT 1; + //ALTER TABLE '0cd82a8b-5285-5737-ab19-8c07247c797e' ADD COLUMN monitorLevel varchar(255) DEFAULT 0; std::string sql = "CREATE TABLE " + g_dbName + ".'"; sql.append(tableName); sql.append("' ( uuid varchar(255) PRIMARY KEY,"); @@ -286,6 +290,8 @@ sql.append("create_by varchar(255) DEFAULT NULL,"); sql.append("del_flag INTEGER DEFAULT 0,"); sql.append("monitorLevel varchar(255) DEFAULT 0,"); + sql.append("uploadFlag varchar(255) DEFAULT 0,"); + sql.append("cmpThreshold varchar(255) DEFAULT 60,"); sql.append("enabled varchar(255) DEFAULT 1"); sql.append(");"); // 浜鸿劯鐗瑰緛琛� diff --git a/QiaoJiaSystem/RapidStructureApp/TriggerElement.cpp b/QiaoJiaSystem/RapidStructureApp/TriggerElement.cpp index 11233ce..541c29f 100644 --- a/QiaoJiaSystem/RapidStructureApp/TriggerElement.cpp +++ b/QiaoJiaSystem/RapidStructureApp/TriggerElement.cpp @@ -5,7 +5,7 @@ // TimerElement(1), triggerState(false), tolerance(tolerance), delay(delay), - triggerType(DOWN), triggerTimes(0),lastDown(0),lastUp(0) { + triggerType(DOWN), triggerTimes(0), lastDown(0), lastUp(0) { } @@ -78,12 +78,12 @@ lastDown = 0; triggerType = DOWN; } -void TriggerElement::resetTriggerState() -{ + +void TriggerElement::resetTriggerState() { //state=false; - triggerState=false; - triggerTimes=0; + triggerState = false; + triggerTimes = 0; } void TriggerElement::timerFunc() { diff --git a/QiaoJiaSystem/StructureApp/AppPipeController.cpp b/QiaoJiaSystem/StructureApp/AppPipeController.cpp index fcddc04..14bfad1 100644 --- a/QiaoJiaSystem/StructureApp/AppPipeController.cpp +++ b/QiaoJiaSystem/StructureApp/AppPipeController.cpp @@ -95,7 +95,7 @@ perHubElement(ruleMap[PerHubSdk]), leftJudgment(ruleMap[KeepRightSdk]), rightJudgment(ruleMap[KeepRightSdk]), - bRecordVideoEnable(RecordVideoEnable), +// bRecordVideoEnable(RecordVideoEnable), m_sdkRuleMap(ruleMap), m_bSetWH(false) { DBG("camId" << camId); @@ -292,7 +292,7 @@ //#todo faceRpcElement.setProperty("time", strNewTime); faceRpcElement.setProperty("imgKey", imgKey); - INFO("Write To FaceRPC ES time:" << strNewTime << " ImgKey: " << imgKey); +// INFO("Write To FaceRPC ES time:" << strNewTime << " ImgKey: " << imgKey); faceRpcElement.setImage(imageTemp); faceRpcElement.submit(); } @@ -302,7 +302,7 @@ //#todo yoloRpcElement.setProperty("time", strNewTime); yoloRpcElement.setProperty("imgKey", imgKey); - INFO("Write To YoloES time:" << strNewTime << " ImgKey: " << imgKey); +// INFO("Write To YoloES time:" << strNewTime << " ImgKey: " << imgKey); yoloRpcElement.setImage(imageTemp); yoloRpcElement.submit(); } @@ -530,7 +530,7 @@ #else vptRpcElement.registerConnector([&] { if (!perimeterElement.isBusy()) { - perimeterElement.setYoloObjects(vptRpcElement.getLastHpRects()); + perimeterElement.setYoloObjects(vptRpcElement.getLastScoreRects()); perimeterElement.setImage(vptRpcElement.getImage()); perimeterElement.submit(); } diff --git a/QiaoJiaSystem/StructureApp/CMakeLists.txt b/QiaoJiaSystem/StructureApp/CMakeLists.txt index 8eaf3c2..b15b23e 100644 --- a/QiaoJiaSystem/StructureApp/CMakeLists.txt +++ b/QiaoJiaSystem/StructureApp/CMakeLists.txt @@ -44,7 +44,6 @@ ../../../BasicPlatForm/basic/util/curl/HttpRequestWithCrul.hpp ../../../BasicPlatForm/basic/util/net_config/net_config.cpp ../../../BasicPlatForm/basic/timer_counter/Clocktimer.cpp - ) SET(LIBS diff --git a/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp b/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp index f965ded..4a49548 100644 --- a/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp +++ b/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp @@ -61,12 +61,12 @@ } void FaceExtractElement::timerFunc() { - INFO("MYH Run Here"); +// INFO("MYH Run Here"); std::vector<FaceToExtract> faceExtractQueueTmp; { std::lock_guard<std::mutex> lg(imageQueueMutex); if (faceExtractQueue.empty()) { - ERR("faceExtractQueue.empty "); +// ERR("faceExtractQueue.empty "); return; } faceExtractQueueTmp.swap(faceExtractQueue); @@ -78,7 +78,7 @@ float t_com_sc = m_sdkRule.nThreshold == 0 ? 75 : m_sdkRule.nThreshold; - DBG(" TESTCODE getValue" << t_camIdex << " " << t_com_sc << " " << t_com_sc / 100); +// DBG(" TESTCODE getValue" << t_camIdex << " " << t_com_sc << " " << t_com_sc / 100); t_com_sc = t_com_sc / 100; @@ -108,7 +108,7 @@ unsigned long size = faceExtractQueueTmp[i].facesPos.size(); for (int j = 0; j < size; j++) { - auto feature = extractServer->faceExtract(image.cols, image.rows, faceExtractQueueTmp[i].facesPos[j], + auto feature = extractServer->faceExtract(image.cols, image.rows, faceExtractQueueTmp[i].facesPos[j], sharedMemory->key().toStdString()); // { // //#todo @@ -118,7 +118,7 @@ // cv::imwrite(string1, image); // } if (feature.empty()) { - INFO("No Face Find: " << getProperty("imgKey")); +// INFO("No Face Find: " << getProperty("imgKey")); continue; } features.clear(); @@ -131,7 +131,7 @@ std::string strImgUrlTmp = ""; fdfsClient->fastFds->uploadFile(buffer, strImgUrlTmp, "jpg"); // strImgUrl.append(fdfsClient->fastFds->getIp() + "/" + strImgUrlTmp); - DBG("strImgUrlTmp=" << strImgUrlTmp); +// DBG("strImgUrlTmp=" << strImgUrlTmp); strImgUrl.clear(); strImgUrl = strImgUrlTmp; // strImgUrl.append("/").append(strImgUrlTmp); diff --git a/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp b/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp index 8ff149f..67fa6d1 100644 --- a/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp +++ b/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp @@ -82,7 +82,7 @@ } void FaceRpcElement::threadFunc() { - INFO("MYH Run Here"); +// INFO("MYH Run Here"); // ClockTimer ct("FaceRpcElement::threadFunc"); // { // @@ -135,12 +135,12 @@ CvUtil::zoomRectEqual(scoredRect.rect, 1.5, 1.5) & cv::Rect(0, 0, image.cols, image.rows)).clone()); triggerScoredRects.push_back(trackingTrigger->getLastRect()); } else { - INFO("No Face Find: " << getProperty("imgKey")); +// INFO("No Face Find: " << getProperty("imgKey")); // DBG("trackingTrigger->triggerOnce(scoredRect) is false "); } } if (faces.empty()) { - INFO("No Face Find: " << getProperty("imgKey")); +// INFO("No Face Find: " << getProperty("imgKey")); } trackingTrigger->triggerLine(); // DBG("faces.size " << faces.size()); diff --git a/QiaoJiaSystem/StructureApp/PerimeterElement.cpp b/QiaoJiaSystem/StructureApp/PerimeterElement.cpp index c637c6d..5358abe 100644 --- a/QiaoJiaSystem/StructureApp/PerimeterElement.cpp +++ b/QiaoJiaSystem/StructureApp/PerimeterElement.cpp @@ -14,19 +14,19 @@ #include <jsoncpp/json/json.h> #define ALARM_PERCENT (25) //25% + PerimeterElement::PerimeterElement(const SdkRule &rule) : m_sdkRule(rule), PipeElement(true), trackingTrigger(nullptr), mRealNum(0), //姣忕鍑犲紶,灏变箻浠ュ嚑 - m_triggerElement(rule.nTriggerDelay*3,0), + m_triggerElement(rule.nTriggerDelay * 3, 0), pManagerEsDB(nullptr), m_bIsMask(true), m_bSetWH(false), pointArray(nullptr), - m_rpcClient("RtspAnalysServer", "127.0.0.1",appPref.getIntData("RpcVTIMPort"),"tcp") -{ + m_rpcClient("RtspAnalysServer", "127.0.0.1", appPref.getIntData("RpcVTIMPort"), "tcp") { pManagerEsDB = new EsDBTool(appPref.getStringData("ipAdd"), appPref.getIntData("ipPort")); } @@ -36,8 +36,7 @@ delete pManagerEsDB; pManagerEsDB = nullptr; } - if(pointArray) - { + if (pointArray) { // delete[] pointArray[0]; delete[] pointArray; } @@ -60,11 +59,17 @@ bool state = false; m_recVec.clear(); + //todo debug + m_scoreVec.clear(); + m_objTypeVec.clear(); + // DBG("Objs="<<mObjs.size()<<" fSensitivity="<<m_sdkRule.fSensitivity<<" nThreshold"<<m_sdkRule.nThreshold); - for (auto obj:mObjs) { + for (auto &obj:mObjs) { if (obj.score < m_sdkRule.fSensitivity)continue; + DBG("objArea:" << obj.rect.width * obj.rect.height); + DBG("alarmObjType:" << obj.properties["type"]); QRect rect(obj.rect.x, obj.rect.y, obj.rect.width, obj.rect.height); QPoint center = rect.center(); @@ -74,67 +79,65 @@ // DBG("picDate="<<picDate); } - if(imgKey.empty()) - { - imgKey =obj.properties["imgKey"]; + if (imgKey.empty()) { + imgKey = obj.properties["imgKey"]; } - if (m_sdkRule.nSdkType == PerimeterSdk) - { - - if(m_bIsMask) + if (m_sdkRule.nSdkType == PerimeterSdk) { + //todo 瑙f瀽sdkrule 骞跺拰妫�娴嬬粨鏋滃姣� + if (m_sdkRule.strPerimeterObjType.toStdString().find(obj.properties["type"]) == + m_sdkRule.strPerimeterObjType.toStdString().npos)//椤甸潰娌℃湁閰嶇疆浜嗚绠楁硶 { - std::vector<Point> poly2; - std::vector<Point> interPoly; - poly2.push_back(Point(rect.x(),rect.y())); - poly2.push_back(Point(rect.x()+rect.width(),rect.y())); - poly2.push_back(Point(rect.x()+rect.width(),rect.y()+rect.height())); - poly2.push_back(Point(rect.x(),rect.y()+rect.height())); - IntAreaCalcUtil::PolygonClip(poly1,poly2,interPoly); - float inter = IntAreaCalcUtil::intAreaCalc(interPoly); - float total1 =IntAreaCalcUtil::intAreaCalc(poly1); - float total2 = IntAreaCalcUtil::intAreaCalc(poly2); - int per1 = (int)(inter / total1 * 100); - int per2 = (int)(inter / total2 * 100); - int per=std::max(per1,per2); + continue; + } - if(ALARM_PERCENT <= per) - { - //DBG("per 1="<<per1<<" per2="<<per2<<" per="<<per); - m_recVec.push_back(obj.rect); - num++; - } + if (m_bIsMask) { + std::vector<Point> poly2; + std::vector<Point> interPoly; + poly2.push_back(Point(rect.x(), rect.y())); + poly2.push_back(Point(rect.x() + rect.width(), rect.y())); + poly2.push_back(Point(rect.x() + rect.width(), rect.y() + rect.height())); + poly2.push_back(Point(rect.x(), rect.y() + rect.height())); + IntAreaCalcUtil::PolygonClip(poly1, poly2, interPoly); + float inter = IntAreaCalcUtil::intAreaCalc(interPoly); + float total1 = IntAreaCalcUtil::intAreaCalc(poly1); + float total2 = IntAreaCalcUtil::intAreaCalc(poly2); + int per1 = (int) (inter / total1 * 100); + int per2 = (int) (inter / total2 * 100); + int per = std::max(per1, per2); + + if (ALARM_PERCENT <= per) { + //DBG("per 1="<<per1<<" per2="<<per2<<" per="<<per); + m_recVec.push_back(obj.rect); + m_scoreVec.push_back(obj.score); + m_objTypeVec.push_back(obj.properties["type"]); + num++; + DBG("============alarmObjType:" << obj.properties["type"] << " score:" << obj.score); + } } - } - else if (mPolygon.containsPoint(center, Qt::OddEvenFill) || !m_bIsMask) - { + } else if (mPolygon.containsPoint(center, Qt::OddEvenFill) || !m_bIsMask) { m_recVec.push_back(obj.rect); - - num++; } - - - } switch (m_sdkRule.nSdkType) { case PerimeterSdk: //state = num > 0 ; - state =( num !=mRealNum); - // DBG("num="<<num<< "time="<< picDate); - INFO("SDK Type: PerimeterSdk"); + state = (num != mRealNum); + // DBG("num="<<num<< "time="<< picDate); +// INFO("SDK Type: PerimeterSdk"); break; case CrowdSdk: - state = num > m_sdkRule.nAlarmNumLowerLimit && num !=mRealNum; - INFO("SDK Type: CrowdSdk"); + state = num > m_sdkRule.nAlarmNumLowerLimit && num != mRealNum; +// INFO("SDK Type: CrowdSdk"); break; case PerHubSdk: - state = num > m_sdkRule.nAlarmNumLowerLimit && num < m_sdkRule.nAlarmNumUpperLimit && num !=mRealNum; - INFO("SDK Type: PerHubSdk"); + state = num > m_sdkRule.nAlarmNumLowerLimit && num < m_sdkRule.nAlarmNumUpperLimit && num != mRealNum; +// INFO("SDK Type: PerHubSdk"); // if(m_sdkRule.nAlarmNumLowerLimit>=0) // { @@ -166,24 +169,32 @@ default: break; } - INFO("State:"<<state<<" Num:"<<num<<" mRealNum:"<<mRealNum<<" LowerLimit :"<<m_sdkRule.nAlarmNumLowerLimit<<" HightLimit: "<<m_sdkRule.nAlarmNumUpperLimit); + INFO("State:" << state << " Num:" << num << " mRealNum:" << mRealNum << " LowerLimit :" + << m_sdkRule.nAlarmNumLowerLimit << " HightLimit: " << m_sdkRule.nAlarmNumUpperLimit + << " m_triggerElement.getTriggerState() :" << m_triggerElement.getTriggerState()); m_triggerElement.setState(state); m_triggerElement.triggerOnce(); - if (m_triggerElement.getTriggerState()) - { - if(num > 0) { - if(pointArray!=nullptr) - { - const cv::Point2i* ppt[1] = { pointArray }; + DBG("m_triggerElement.getTriggerState():" << m_triggerElement.getTriggerState()); + if (m_triggerElement.getTriggerState()) { + if (num > 0) { + if (pointArray != nullptr) { + const cv::Point2i *ppt[1] = {pointArray}; - int npt[]={npts}; + int npt[] = {npts}; - cv::polylines(image, ppt,npt, 1, true,cv::Scalar(255,255,0), 2); + cv::polylines(image, ppt, npt, 1, true, cv::Scalar(255, 255, 0), 2); } - for(auto rect:m_recVec) - { - cv::rectangle(image, rect, cv::Scalar(0, 0, 255), 2); +// for(auto rect:m_recVec) +// { +// cv::rectangle(image, rect, cv::Scalar(0, 0, 255), 2); +// } + for (int i = 0; i < m_recVec.size(); i++) { + cv::rectangle(image, m_recVec[i], cv::Scalar(0, 0, 255), 2); + cv::putText(image, to_string(m_scoreVec[i]), cv::Point(m_recVec[i].x, m_recVec[i].y + 12), + cv::HersheyFonts::FONT_HERSHEY_PLAIN, 1.5, cv::Scalar(255, 255, 0)); + cv::putText(image, m_objTypeVec[i], cv::Point(m_recVec[i].x, m_recVec[i].y + 24), + cv::HersheyFonts::FONT_HERSHEY_PLAIN, 1.5, cv::Scalar(255, 255, 0)); } // cv::Mat t_image = image(CutMask()).clone(); // if(t_image.empty()) @@ -192,7 +203,7 @@ // return; // } std::string imgUrl = uploadImgToFdfs(image); - saveInfoToEs(imgUrl, picDate,imgKey); + saveInfoToEs(imgUrl, picDate, imgKey); } DBG("num=" << num << " lastnum=" << mRealNum); mRealNum = num; @@ -262,31 +273,28 @@ void PerimeterElement::setMask(std::string mask) { QJsonArray arrayAreas = getJsonArrayFromQString(QString::fromStdString(mask)); if (arrayAreas.isEmpty() && m_sdkRule.nSdkType != PerimeterSdk) { - m_bIsMask=false; + m_bIsMask = false; return;//do not detect } int size = arrayAreas.size(); npts = size; - float sizeW=(float)appPref.getIntData(m_sdkRule.strCamId.toStdString()+"width")/480; - float sizeH=(float)appPref.getIntData(m_sdkRule.strCamId.toStdString()+"height")/270; - pointArray=new cv::Point2i[npts]; + float sizeW = (float) appPref.getIntData(m_sdkRule.strCamId.toStdString() + "width") / 480; + float sizeH = (float) appPref.getIntData(m_sdkRule.strCamId.toStdString() + "height") / 270; + pointArray = new cv::Point2i[npts]; for (int i = 0; i < size; ++i) { QJsonValue jsonValue = arrayAreas[i]; QJsonObject obj = jsonValue.toObject(); - int x = obj.value("x").toDouble() *sizeW; - int y = obj.value("y").toDouble() *sizeH; - pointArray[i]={x,y}; - if(m_sdkRule.nSdkType == PerimeterSdk) - { - poly1.push_back(Point(x,y)); + int x = obj.value("x").toDouble() * sizeW; + int y = obj.value("y").toDouble() * sizeH; + pointArray[i] = {x, y}; + if (m_sdkRule.nSdkType == PerimeterSdk) { + poly1.push_back(Point(x, y)); + } else { + mPolygon << (QPoint(x, y)); } - else - { - mPolygon << (QPoint(x, y)); - } - DBG("width="<<sizeW); - DBG("height="<<sizeH); +// DBG("width="<<sizeW); +// DBG("height="<<sizeH); } @@ -295,7 +303,7 @@ QJsonArray PerimeterElement::getJsonArrayFromQString(const QString &strJson) { QJsonDocument jsonDocument = QJsonDocument::fromJson(strJson.toLocal8Bit()); if (jsonDocument.isNull()) { - DBG("please check the string" << strJson.toStdString()); + ERR("please check the string" << strJson.toStdString()); return QJsonArray(); } QJsonArray jsonArray = jsonDocument.array(); @@ -307,10 +315,9 @@ // image = cv::Mat(value.rows, value.cols, CV_8UC3, sharedMemory->data()); // } value.copyTo(image); - if(!m_bSetWH) - { + if (!m_bSetWH) { setMask(m_sdkRule.strAreas.toStdString()); - m_bSetWH=true; + m_bSetWH = true; } } @@ -327,7 +334,7 @@ CvUtil::cvMat2Buffer(image, buffer); std::string strImgUrlTmp = ""; fdfsClient->fastFds->uploadFile(buffer, strImgUrlTmp, "jpg"); - // strImgUrl.append(fdfsClient->fastFds->getIp() + "/" + strImgUrlTmp); + // strImgUrl.append(fdfsClient->fastFds->getIp() + "/" + strImgUrlTmp); strImgUrl.clear(); strImgUrl = strImgUrlTmp; // strImgUrl.append("/").append(strImgUrlTmp); @@ -336,7 +343,7 @@ return strImgUrl; } -bool PerimeterElement::saveInfoToEs(const std::string &imgUrl, const std::string &time,const std::string& imgKey) { +bool PerimeterElement::saveInfoToEs(const std::string &imgUrl, const std::string &time, const std::string &imgKey) { string str_uuid; uuid_t t_uuid; @@ -361,13 +368,13 @@ t_json["ChannlId"] = getProperty("ch_id"); // 閫氶亾id t_json["likeDate"] = AppUtil::getTimeSecString(); // 姣斿鏃堕棿 t_json["picAddress"] = m_sdkRule.strAddr.toStdString();// 鎶撴媿鍦板潃 - DBG("picAddress="<<m_sdkRule.strAddr.toStdString()); + DBG("picAddress=" << m_sdkRule.strAddr.toStdString()); t_json["picMaxUrl"] = ""; // 澶у浘璺緞 // t_json["Age"] ="wait todo"; t_json["picDate"] = time; // 鎶撴媿鏃堕棿锛屽繀椤绘湁 - DBG("picDate="<<time); + DBG("picDate=" << time); t_json["picLocalUrl"] = ""; // 鏈湴璺緞 t_json["isDelete"] = "1";//榛樿1 ,0鏃犳晥 1鏈夋晥 @@ -389,20 +396,18 @@ t_json["imgKey"] = imgKey; try { auto server = m_rpcClient.getServer(); - if (!server) - { + if (!server) { ERR("server is null"); //return false; } - INFO("Record Video "<<imgKey); + INFO("Record Video " << imgKey); server->recordVideo(imgKey); } - catch (std::exception &e) - { - ERR("Record Video Err: "<<imgKey <<" Message: "<<e.what()); + catch (std::exception &e) { + ERR("Record Video Err: " << imgKey << " Message: " << e.what()); //return false; } - INFO("SaveImgKeyToES: "<<imgKey); + INFO("SaveImgKeyToES: " << imgKey); bool retface = false; if (pManagerEsDB) retface = pManagerEsDB->insertData("personaction", "perVideoAction", t_json.toStyledString(), str_uuid); diff --git a/QiaoJiaSystem/StructureApp/PerimeterElement.h b/QiaoJiaSystem/StructureApp/PerimeterElement.h index df6deca..cdc80d7 100644 --- a/QiaoJiaSystem/StructureApp/PerimeterElement.h +++ b/QiaoJiaSystem/StructureApp/PerimeterElement.h @@ -85,7 +85,12 @@ int npts; - std::vector<cv::Rect> m_recVec; + std::vector<cv::Rect> m_recVec; + + //todo debug + std::vector<float> m_scoreVec; + std::vector<std::string> m_objTypeVec; + bool m_bIsMask; std::vector<Point> poly1; diff --git a/QiaoJiaSystem/StructureApp/VptRpcElement.cpp b/QiaoJiaSystem/StructureApp/VptRpcElement.cpp index 8607438..3168bf2 100644 --- a/QiaoJiaSystem/StructureApp/VptRpcElement.cpp +++ b/QiaoJiaSystem/StructureApp/VptRpcElement.cpp @@ -10,6 +10,7 @@ appPref.getStringData("vpt.ip"), appPref.getIntData("vpt.port"), "tcp"), m_sharedMemory(nullptr), m_trackingTrigger(nullptr) { + init(); } @@ -63,9 +64,9 @@ } for (auto &obj: m_objs) { - //#todo 浜�/浜洪獞杞�/杞� - if (obj.sdkDetectType != 0) - continue; +// //#todo 浜�/浜洪獞杞�/杞� +// if (obj.sdkDetectType != 0) +// continue; ScoredRect scoredRect; @@ -80,24 +81,25 @@ m_trackingTrigger->getLastRect().properties["time"] = getProperty("time"); m_trackingTrigger->getLastRect().properties["imgKey"] = getProperty("imgKey"); m_triggerScoredRects.push_back(m_trackingTrigger->getLastRect()); - switch (obj.sdkDetectType) { - case 0 : - m_HPScoredRects.push_back(m_trackingTrigger->getLastRect()); - break; - case 1: - case 2 : - m_HCPScoredRects.push_back(m_trackingTrigger->getLastRect()); - break; - case 4 : - case 5 : - case 6 : - case 8 : - m_CarScoredRects.push_back(m_trackingTrigger->getLastRect()); - break; - } + } } m_trackingTrigger->triggerLine(); + auto res_ = m_trackingTrigger->getLastScoreRects(); + for (auto &obj: res_) { + if(obj.properties["type"] == "person") { + m_HPScoredRects.push_back(obj); + DBG("person:" << obj.score); + }else if((obj.properties["type"] == "bike") || + (obj.properties["type"] == "motor")){ + m_HCPScoredRects.push_back(obj); + DBG("bike or moto:" << obj.score); + }else{ + m_CarScoredRects.push_back(obj); + DBG("car:" << obj.score); + } + } + fireConnectors(); } @@ -113,9 +115,9 @@ try { auto server = m_rpcClient.getServer(); - m_HpResStr = server->getStr(0); // 妫�娴嬬绫� case 0 - m_HcpResStr = server->getStr(1); // 妫�娴嬬绫� case 1 - m_TypeStr = server->getStr(2)[0]; // 妫�娴嬬绫� case 2 + m_HpResStr = server->getStr(0); // 琛屼汉浜屾灞炴�� case 0 + m_HcpResStr = server->getStr(1); // 浜洪獞杞︿簩娆″睘鎬� case 1 + m_TypeStr = server->getStr(2)[0]; // VPT妫�娴嬬绫� case 2 m_colorLabelStr = server->getStr(3)[0]; // 杞︾墝棰滆壊 case 3 } catch (std::exception &e) { diff --git a/QiaoJiaSystem/StructureApp/main.cpp b/QiaoJiaSystem/StructureApp/main.cpp index 7d62bc9..454701c 100644 --- a/QiaoJiaSystem/StructureApp/main.cpp +++ b/QiaoJiaSystem/StructureApp/main.cpp @@ -21,13 +21,18 @@ appPref.setIntData("gpu.index", 0); appPref.setIntData("show.image", 0); - //yolo server - appPref.setStringData("yolo.proxy", "yoloServer"); - //#todo - appPref.setStringData("yolo.ip", ""); - appPref.setIntData("yolo.port", 10003); -// rpcClient(appPref.getStringData("yolo.proxy"), appPref.getStringData("yolo.ip"), appPref.getLongData("yolo.port"),"tcp"), +// //yolo server +// appPref.setStringData("yolo.proxy", "yoloServer"); +// //#todo +// appPref.setStringData("yolo.ip", ""); +// appPref.setIntData("yolo.port", 10003); +//// rpcClient(appPref.getStringData("yolo.proxy"), appPref.getStringData("yolo.ip"), appPref.getLongData("yolo.port"),"tcp"), +//vpt server + appPref.setStringData("vpt.proxy", "VptServer"); + //#todo + appPref.setStringData("vpt.ip", ""); + appPref.setIntData("vpt.port", appPref.getIntData("RpcVptPort")); //face detect server appPref.setStringData("faceDete.proxy", "faceServer"); diff --git a/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp b/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp index 6432932..9900ab5 100644 --- a/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp +++ b/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp @@ -102,7 +102,17 @@ //#todo 浣跨敤绛栫暐妯″紡?鍙戦�佺澶氫釜鎸囦护绱Н鍚庡彂閫�? if (itor_json->isString() && reader.parse(itor_json->asString(), cfg_val)) { if (itor_json.name() == "cam_edit" || itor_json.name() == "editSdkRule") { - string cam_idx = cfg_val["str_cam_dev_id"].asString(); + string cam_idx = ""; + if(itor_json.name() == "cam_edit"){ + if (pthis->m_GB28181_Enable){ + cam_idx = cfg_val["equipCode"].asString(); + }else{ + cam_idx = cfg_val["str_cam_dev_id"].asString(); + } + } else { + cam_idx = cfg_val["strCamId"].asString(); + } + if (pthis->controllers.find(cam_idx) != pthis->controllers.end()) { if (pthis->m_GB28181_Enable) { auto lst = pthis->m_lDBTool->searchCamDevTableByType(1); @@ -126,7 +136,13 @@ } } } else if (itor_json.name() == "cam_del") { - string cam_idx = cfg_val["str_cam_dev_id"].asString(); +// string cam_idx = cfg_val["str_cam_dev_id"].asString(); + string cam_idx = ""; + if(cfg_val["equipCode"].asString().size()){ + cam_idx = cfg_val["equipCode"].asString(); + }else if(cfg_val["str_cam_dev_id"].asString().size()){ + cam_idx = cfg_val["str_cam_dev_id"].asString(); + } pthis->removeCamera(cam_idx); } } else { @@ -254,14 +270,16 @@ rule.second.strAddr = item.str_addr; rule.second.weekRuleVec = m_lDBTool->searchCameraWeekRuleByCamId(item.str_cam_dev_id, rule.first); - if (rule.second.nSdkType == PerStaticSdk) { - float temp = 1 - (float) (rule.second.nThreshold) / 100; - rule.second.fSensitivity = (75 + 25 * temp) / 100; +// if (rule.second.nSdkType == PerStaticSdk || rule.second.nSdkType == PerimeterSdk +// || rule.second.nSdkType == KeepRightSdk || rule.second.nSdkType == KeepRightSdk) { + float temp = (float)1 - (float) (rule.second.nThreshold) / 100; + rule.second.fSensitivity = (temp * 50 + 50) / 100; +// rule.second.fSensitivity = (temp * 25 + 75) / 100; - } else if (rule.second.nSdkType != FaceSdk) { - float temp = 1 - (float) (rule.second.nThreshold) / 100; - rule.second.fSensitivity = (5 + 90 * temp) / 100; - } +// } else if (rule.second.nSdkType != FaceSdk) { +// float temp = (float)1 - (float) (rule.second.nThreshold) / 100; +// rule.second.fSensitivity = (temp * 90 + 5) / 100; +// } DBG("fSensitivity" << rule.second.fSensitivity); } appPref.setStringData(t_camIdex + "rtsp", rtsp_url); diff --git a/QiaoJiaSystem/VideoAnalysFromHC/main.cpp b/QiaoJiaSystem/VideoAnalysFromHC/main.cpp index 6edf3bf..d5a83dd 100644 --- a/QiaoJiaSystem/VideoAnalysFromHC/main.cpp +++ b/QiaoJiaSystem/VideoAnalysFromHC/main.cpp @@ -86,7 +86,7 @@ appPref.setIntData("gpu.index", atoi(argv[2])); appPref.setIntData("CamStartNO", atoi(argv[3])); appPref.setIntData("CamEndNO", atoi(argv[4])); - appPref.setIntData("RpcYOLOPort", atoi(argv[5])); + appPref.setIntData("RpcVptPort", atoi(argv[5])); appPref.setIntData("RpcFDPort", atoi(argv[6])); appPref.setIntData("RpcFEPort", atoi(argv[7])); appPref.setIntData("RpcFSPort", atoi(argv[8])); @@ -102,12 +102,17 @@ appPref.setIntData("ipPort", appConfig.getIntProperty("ES_PORT")); //yolo server - appPref.setStringData("yolo.proxy", "yoloServer"); - //#todo - appPref.setStringData("yolo.ip", ""); - appPref.setIntData("yolo.port", appPref.getIntData("RpcYOLOPort")); -// rpcClient(appPref.getStringData("yolo.proxy"), appPref.getStringData("yolo.ip"), appPref.getLongData("yolo.port"),"tcp"), +// appPref.setStringData("yolo.proxy", "yoloServer"); +// //#todo +// appPref.setStringData("yolo.ip", ""); +// appPref.setIntData("yolo.port", appPref.getIntData("RpcYOLOPort")); +//// rpcClient(appPref.getStringData("yolo.proxy"), appPref.getStringData("yolo.ip"), appPref.getLongData("yolo.port"),"tcp"), +//vpt server + appPref.setStringData("vpt.proxy", "vptServer"); + //#todo + appPref.setStringData("vpt.ip", ""); + appPref.setIntData("vpt.port", appPref.getIntData("RpcVptPort")); //face detect server appPref.setStringData("faceDete.proxy", "faceServer"); diff --git a/QiaoJiaSystem/VideoServer/QiaoJia/DB/DBStruct.h b/QiaoJiaSystem/VideoServer/QiaoJia/DB/DBStruct.h index 44e7822..5f7aa3a 100644 --- a/QiaoJiaSystem/VideoServer/QiaoJia/DB/DBStruct.h +++ b/QiaoJiaSystem/VideoServer/QiaoJia/DB/DBStruct.h @@ -299,6 +299,7 @@ strExAreas = ""; strLine = ""; strAddr = ""; + strPerimeterObjType = ""; } int nSdkType; @@ -318,6 +319,7 @@ int nAlarmNumUpperLimit; //鎶ヨ浜烘暟锛堜汉鍛樻嫢鎸わ級 int nAlarmNumLowerLimit; int nIsRun; + QString strPerimeterObjType;//鍏ヤ镜绫诲瀷 std::vector<LActRuleWeekRecord> weekRuleVec; }; diff --git a/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp b/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp index cba8280..d9bb45b 100644 --- a/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp +++ b/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp @@ -2688,6 +2688,7 @@ rec.setValue("is_run", sdkRule.nIsRun); rec.setValue("img_threshold", sdkRule.nThreshold); rec.setValue("img_quality", sdkRule.nQuality); + rec.setValue("perimeter_obj_type", sdkRule.strPerimeterObjType); int rowCount = pModel.rowCount(); if (rowCount == 0) { @@ -2734,6 +2735,7 @@ rule.nAlarmNumUpperLimit = rec.value("alarm_num_upper").toInt(); rule.nAlarmNumLowerLimit = rec.value("alarm_num_lower").toInt(); rule.strBroadcast = rec.value("broadcast_area").toString(); + rule.strPerimeterObjType = rec.value("perimeter_obj_type").toString(); rule.nIsRun = rec.value("is_run").toInt(); rule.nSdkType = rec.value("sdk_type").toInt(); ruleMap[rule.nSdkType] = rule; diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp index 36b2df4..295ad0b 100644 --- a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp +++ b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp @@ -90,7 +90,13 @@ } } } else if (itor_json.name() == "cam_edit") { - string cam_idx = cfg_val["str_cam_dev_id"].asString(); + string cam_idx = ""; + if(pthis->m_GB28181_Enable){ + cam_idx = cfg_val["equipCode"].asString(); + }else{ + cam_idx = cfg_val["str_cam_dev_id"].asString(); + } + if (pthis->m_GB28181_Enable) { if (pthis->m_controllers_videoCapElem.find(cam_idx) != pthis->m_controllers_videoCapElem.end()) { @@ -108,19 +114,24 @@ } } } else if (itor_json.name() == "cam_del") { - string cam_idx = cfg_val["str_cam_dev_id"].asString(); + string cam_idx = ""; + if(pthis->m_GB28181_Enable){ + cam_idx = cfg_val["equipCode"].asString(); + }else{ + cam_idx = cfg_val["str_cam_dev_id"].asString(); + } pthis->removeCamera(cam_idx); } else if (itor_json.name() == "cam_startPublish") { string cam_idx = cfg_val["id"].asString(); if (pthis->m_GB28181_Enable) { if (pthis->m_controllers_videoCapElem.find(cam_idx) != pthis->m_controllers_videoCapElem.end()) { - INFO("cam add is " << cfg_val["str_addr"].asString()); + INFO("cam add is " << cam_idx); pthis->m_controllers_videoCapElem[cam_idx]->startPublishVideo(); } } else { if (pthis->m_controllers.find(cam_idx) != pthis->m_controllers.end()) { - INFO("cam add is " << cfg_val["str_addr"].asString()); + INFO("cam add is " << cam_idx); pthis->m_controllers[cam_idx]->startPublishVideo(); } } @@ -325,7 +336,7 @@ // auto lst = m_lDBTool->searchCamDevTableAll(); Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo(); if (m_controllers.find(index) == m_controllers.end()) { - INFO("MYH DEBUG HERE"); +// INFO("MYH DEBUG HERE"); if (m_currentCount >= m_maxCount) { ERR("addCamera faild, camera's num is full!") return -1; @@ -356,7 +367,7 @@ * @return 鎬绘槸0 */ int RtspAnalysManager::removeCamera(const std::string &index) { - INFO("MYH DEBUG HERE"); +// INFO("MYH DEBUG HERE"); if (m_GB28181_Enable) { if (m_controllers_videoCapElem.find(index) == m_controllers_videoCapElem.end())return -1; auto controller = m_controllers_videoCapElem[index]; @@ -382,7 +393,7 @@ delete imgRedis; m_imgRedisControllers.erase(index); m_imgRedisCRwLock.unlock(); - INFO("MYH DEBUG HERE"); +// INFO("MYH DEBUG HERE"); return 0; } @@ -443,7 +454,7 @@ //褰曞彇瑙嗛鐨凴PC鐨勬帴鍙e嚱鏁� ::std::string RtspAnalysManager::recordVideo(const ::std::string &name, const ::Ice::Current &) { - INFO("Record Video For: " << name); +// INFO("Record Video For: " << name); ImageName_s_t nameSt = ImageName_s_t::fromString(name); if (nameSt.Valid()) { if (m_GB28181_Enable) { diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.cpp b/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.cpp index 374529b..38fcecb 100644 --- a/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.cpp +++ b/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.cpp @@ -39,39 +39,57 @@ } } - m_picCount++; - //鍑犲紶閫変竴寮犳斁鍏edis - if (m_picCount % m_nPicsPickOne != 0) { - return; - } else { - m_picCount.store(0); - } + u_char *data; + int width = 0, height = 0, step = 0, cn = 0; + cv::Mat copyMat; - { - u_char *data; - int width = 0, height = 0, step = 0, cn = 0; - m_capture->retrieveFrame(0, &data, &step, &width, &height, &cn); - - cv::Mat img(height, width, CV_8UC3, data, step); - cv::Mat copyMat; - img.copyTo(copyMat); - std::string imageName = m_capture->GetImageName(); - m_pManager->SaveImageToRedis(m_camId, imageName, copyMat); - } - //#todo publish Video + //#publish Video if (m_publishVideoRet) { if (videoPublishElement == nullptr) { string path = appConfig.getStringProperty("srsAddr") + "cam" + m_camId + ".flv"; cv::Size size_(appConfig.getIntProperty("pulish.width"), appConfig.getIntProperty("pulish.height")); int gupIdx = appPref.getIntData("gpu.index"); videoPublishElement = new ffmpeg::VideoPublishElement(path, size_, "flv", 25, gupIdx); + videoPublishElement->start(); } else { +// DBG("videoPublishElement->setImage()"); + m_capture->retrieveFrame(0, &data, &step, &width, &height, &cn); + cv::Mat img(height, width, CV_8UC3, data, step); + img.copyTo(copyMat); + + if (!copyMat.empty()) { + videoPublishElement->setImage(copyMat); + } else { + DBG("copyMat.empty()"); + } + } + } else { + if (videoPublishElement != nullptr) { + DBG("videoPublishElement->stop()"); videoPublishElement->stop(); videoPublishElement->wait(); delete videoPublishElement; videoPublishElement = nullptr; } } + + //鍑犲紶閫変竴寮犳斁鍏edis + m_picCount++; + if (m_picCount % m_nPicsPickOne != 0) { +// return; + } else { + m_picCount.store(0); + + if (copyMat.empty()) { +// ERR("copyMat.empty()"); + m_capture->retrieveFrame(0, &data, &step, &width, &height, &cn); + cv::Mat img(height, width, CV_8UC3, data, step); + img.copyTo(copyMat); + } + std::string imageName = m_capture->GetImageName(); + m_pManager->SaveImageToRedis(m_camId, imageName, copyMat); + } + fireConnectors(); } diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.h b/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.h index 36fa3ea..af806a5 100644 --- a/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.h +++ b/QiaoJiaSystem/VideoToImageMulth/RtspCaptureElement.h @@ -56,7 +56,7 @@ std::atomic<bool> m_publishVideoRet{false}; - ffmpeg::VideoPublishElement *videoPublishElement; + ffmpeg::VideoPublishElement *videoPublishElement{nullptr}; // Redis鐨勫伐鍏风被 // HiredisTool m_redisTool; diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspImageRedis.cpp b/QiaoJiaSystem/VideoToImageMulth/RtspImageRedis.cpp index 871bda6..7e7e804 100644 --- a/QiaoJiaSystem/VideoToImageMulth/RtspImageRedis.cpp +++ b/QiaoJiaSystem/VideoToImageMulth/RtspImageRedis.cpp @@ -30,13 +30,13 @@ //缁ф壙鑷埗绫�,绾跨▼鍒濆鍖栫殑涓�浜涘伐浣� void RtspImageRedisElement::threadInitial() { - INFO("MYH DEBUG HERE"); +// INFO("MYH DEBUG HERE"); } //缁ф壙鑷埗绫�,绾跨▼缁撴潫鐨勬椂鍊欒皟鐢� void RtspImageRedisElement::threadClosing() { - INFO("MYH DEBUG HERE"); +// INFO("MYH DEBUG HERE"); } //淇濆瓨鍥剧墖鍒伴槦鍒椾腑, @@ -50,7 +50,7 @@ m_imageQueue.push(NameImagePair_s_t(imageName,img)); } else{ - ERR("SaveImage Failed ImgName:"<<imageName); +// ERR("SaveImage Failed ImgName:"<<imageName); } return true; } diff --git a/QiaoJiaSystem/VptServer/CMakeLists.txt b/QiaoJiaSystem/VptServer/CMakeLists.txt index b7ccfac..91e237a 100644 --- a/QiaoJiaSystem/VptServer/CMakeLists.txt +++ b/QiaoJiaSystem/VptServer/CMakeLists.txt @@ -36,6 +36,9 @@ VptServerI.cpp VptDetectWrapper.cpp ./rpc/VptServer.cpp + + ../../../BasicPlatForm/basic/timer_counter/Clocktimer.h + ../../../BasicPlatForm/basic/timer_counter/Clocktimer.cpp # GlobalSignalWaitLock.hpp ) diff --git a/QiaoJiaSystem/VptServer/VptDetectWrapper.cpp b/QiaoJiaSystem/VptServer/VptDetectWrapper.cpp index 8b6b353..f49d7cf 100644 --- a/QiaoJiaSystem/VptServer/VptDetectWrapper.cpp +++ b/QiaoJiaSystem/VptServer/VptDetectWrapper.cpp @@ -4,6 +4,7 @@ #include <basic/debug/Debug.h> #include "VptDetectWrapper.h" +#include <basic/timer_counter/Clocktimer.h> VptDetectWrapper::VptDetectWrapper() { init(); @@ -43,6 +44,7 @@ } list<VptDetectResults> VptDetectWrapper::process_image(cv::Mat &_img) { + ClockTimer ct("VptDetectWrapper::process_image"); m_results.clear(); sy_img img; @@ -61,6 +63,9 @@ int colorIndex = result.info[i].obj_index; if (colorIndex < 0 || colorIndex >= 9)continue; + if(colorIndex==4) DBG("detect a car, score =" << result.info[i].obj_score); + if(colorIndex==1) DBG("detect a bike, score =" << result.info[i].obj_score); + if(colorIndex==2) DBG("detect a moto, score =" << result.info[i].obj_score); // sprintf(str_i, "%s:%.2f", type[colorIndex].c_str(), result.info[i].obj_score); // rectangle(process_image, @@ -100,7 +105,7 @@ delete[] result.info; result.info = NULL; } - DBG(m_results.size()); +// DBG(m_results.size()); return m_results; } @@ -146,62 +151,68 @@ auto &carRes = vptDetectResults.vptDetectRes.carDetectRes; // 杞﹂鑹� - carRes.colorLabel = static_cast<ColorLabel>(cur_res->vc_res.res_index); - carRes.colorLabelProb = cur_res->vc_res.res_prob; + if(m_param.vehicle_color_config == SY_CONFIG_OPEN) { + carRes.colorLabel = static_cast<ColorLabel>(cur_res->vc_res.res_index); + carRes.colorLabelProb = cur_res->vc_res.res_prob; + } // 杞﹀瀷璇嗗埆 - if (cur_res->vr_res.vehicle_brand != NULL) { - cout << " 杞﹁締鍝佺墝 - " << cur_res->vr_res.vehicle_brand << endl; - carRes.vehicle_brand = cur_res->vr_res.vehicle_brand; + if(m_param.vehicle_recg_config == SY_CONFIG_OPEN) { + if (cur_res->vr_res.vehicle_brand != NULL) { + cout << " 杞﹁締鍝佺墝 - " << cur_res->vr_res.vehicle_brand << endl; + carRes.vehicle_brand = cur_res->vr_res.vehicle_brand; // carRes.vehicle_brand = string(cur_res->vr_res.vehicle_brand); // carRes.vehicle_brand = "鍙�"; - delete[] cur_res->vr_res.vehicle_brand; - cur_res->vr_res.vehicle_brand = NULL; - } - if (cur_res->vr_res.vehicle_subbrand != NULL) { - cout << " 杞﹁締瀛愬搧鐗� - " << cur_res->vr_res.vehicle_subbrand << endl; - carRes.vehicle_subbrand = cur_res->vr_res.vehicle_subbrand; -// carRes.vehicle_subbrand = cur_res->vr_res.vehicle_subbrand; - delete[] cur_res->vr_res.vehicle_subbrand; - cur_res->vr_res.vehicle_subbrand = NULL; - } - if (cur_res->vr_res.vehicle_issue_year != NULL) { - cout << " 杞﹁締骞存 - " << cur_res->vr_res.vehicle_issue_year << endl; - carRes.vehicle_issue_year = cur_res->vr_res.vehicle_issue_year; - delete[] cur_res->vr_res.vehicle_issue_year; - cur_res->vr_res.vehicle_issue_year = NULL; - } - if (cur_res->vr_res.vehicle_type != NULL) { - cout << " 杞﹁締绫诲瀷 - " << cur_res->vr_res.vehicle_type << endl; - carRes.vehicle_type = cur_res->vr_res.vehicle_type; - delete[] cur_res->vr_res.vehicle_type; - cur_res->vr_res.vehicle_type = NULL; - } - if (cur_res->vr_res.freight_ton != NULL) { - cout << " 璐ц溅鍚ㄧ骇 - " << cur_res->vr_res.freight_ton << endl; - carRes.freight_ton = cur_res->vr_res.freight_ton; - delete[] cur_res->vr_res.freight_ton; - cur_res->vr_res.freight_ton = NULL; - } -// cout << " " << cur_res->vr_res.name_score << endl; - carRes.vehicle_score = cur_res->vr_res.name_score; - - // 杞︾墝 - if (cur_res->vp_res.rect.height_ != 0 && cur_res->vp_res.rect.width_ != 0) { - cout << "杞︾墝浣嶇疆: " << cur_res->vp_res.rect.left_ << " " << cur_res->vp_res.rect.top_ << " " - << cur_res->vp_res.rect.width_ << " " << cur_res->vp_res.rect.height_ << endl; - carRes.carPlateRect.setRect(cur_res->vp_res.rect.left_, cur_res->vp_res.rect.top_, - cur_res->vp_res.rect.width_, cur_res->vp_res.rect.height_); - carRes.carPlateRectScore = cur_res->vp_res.detectScore; - std::string _carPlate; - for (int m = 0; m < 7; m++) { - printf("%s", cur_res->vp_res.recg[m].character); - _carPlate.append(cur_res->vp_res.recg[m].character); + delete[] cur_res->vr_res.vehicle_brand; + cur_res->vr_res.vehicle_brand = NULL; } - carRes.carPlate = const_cast<char *>(_carPlate.c_str()); - carRes.carPlateRectScore = cur_res->vp_res.numScore; - carRes.carPlatetype = cur_res->vp_res.type; + if (cur_res->vr_res.vehicle_subbrand != NULL) { + cout << " 杞﹁締瀛愬搧鐗� - " << cur_res->vr_res.vehicle_subbrand << endl; + carRes.vehicle_subbrand = cur_res->vr_res.vehicle_subbrand; +// carRes.vehicle_subbrand = cur_res->vr_res.vehicle_subbrand; + delete[] cur_res->vr_res.vehicle_subbrand; + cur_res->vr_res.vehicle_subbrand = NULL; + } + if (cur_res->vr_res.vehicle_issue_year != NULL) { + cout << " 杞﹁締骞存 - " << cur_res->vr_res.vehicle_issue_year << endl; + carRes.vehicle_issue_year = cur_res->vr_res.vehicle_issue_year; + delete[] cur_res->vr_res.vehicle_issue_year; + cur_res->vr_res.vehicle_issue_year = NULL; + } + if (cur_res->vr_res.vehicle_type != NULL) { + cout << " 杞﹁締绫诲瀷 - " << cur_res->vr_res.vehicle_type << endl; + carRes.vehicle_type = cur_res->vr_res.vehicle_type; + delete[] cur_res->vr_res.vehicle_type; + cur_res->vr_res.vehicle_type = NULL; + } + if (cur_res->vr_res.freight_ton != NULL) { + cout << " 璐ц溅鍚ㄧ骇 - " << cur_res->vr_res.freight_ton << endl; + carRes.freight_ton = cur_res->vr_res.freight_ton; + delete[] cur_res->vr_res.freight_ton; + cur_res->vr_res.freight_ton = NULL; + } +// cout << " " << cur_res->vr_res.name_score << endl; + carRes.vehicle_score = cur_res->vr_res.name_score; + } + + if(m_param.vehicle_pendant_det_recg_config == SY_CONFIG_OPEN) { + // 杞︾墝 + if (cur_res->vp_res.rect.height_ != 0 && cur_res->vp_res.rect.width_ != 0) { + cout << "杞︾墝浣嶇疆: " << cur_res->vp_res.rect.left_ << " " << cur_res->vp_res.rect.top_ << " " + << cur_res->vp_res.rect.width_ << " " << cur_res->vp_res.rect.height_ << endl; + carRes.carPlateRect.setRect(cur_res->vp_res.rect.left_, cur_res->vp_res.rect.top_, + cur_res->vp_res.rect.width_, cur_res->vp_res.rect.height_); + carRes.carPlateRectScore = cur_res->vp_res.detectScore; + std::string _carPlate; + for (int m = 0; m < 7; m++) { + printf("%s", cur_res->vp_res.recg[m].character); + _carPlate.append(cur_res->vp_res.recg[m].character); + } + carRes.carPlate = const_cast<char *>(_carPlate.c_str()); + carRes.carPlateRectScore = cur_res->vp_res.numScore; + carRes.carPlatetype = cur_res->vp_res.type; // printf(" numScore = %.2f, detectScore = %.2f\n", cur_res->vp_res.numScore, cur_res->vp_res.detectScore); + } } }; break; diff --git a/QiaoJiaSystem/build/DataWebServer b/QiaoJiaSystem/build/DataWebServer index 664c46a..159d12e 100755 --- a/QiaoJiaSystem/build/DataWebServer +++ b/QiaoJiaSystem/build/DataWebServer Binary files differ diff --git a/QiaoJiaSystem/build/FaceDetectResourcesTest b/QiaoJiaSystem/build/FaceDetectResourcesTest index f9ddeb1..92a5db2 100755 --- a/QiaoJiaSystem/build/FaceDetectResourcesTest +++ b/QiaoJiaSystem/build/FaceDetectResourcesTest Binary files differ diff --git a/QiaoJiaSystem/build/FaceDetectServer b/QiaoJiaSystem/build/FaceDetectServer index 0bc5e41..80b8a99 100755 --- a/QiaoJiaSystem/build/FaceDetectServer +++ b/QiaoJiaSystem/build/FaceDetectServer Binary files differ diff --git a/QiaoJiaSystem/build/FaceExtractServer b/QiaoJiaSystem/build/FaceExtractServer index e2aeb11..fddc622 100755 --- a/QiaoJiaSystem/build/FaceExtractServer +++ b/QiaoJiaSystem/build/FaceExtractServer Binary files differ diff --git a/QiaoJiaSystem/build/FaceSearchServer b/QiaoJiaSystem/build/FaceSearchServer index 5a2e1ea..eac0e3f 100755 --- a/QiaoJiaSystem/build/FaceSearchServer +++ b/QiaoJiaSystem/build/FaceSearchServer Binary files differ diff --git a/QiaoJiaSystem/build/VideoAnalysFromHC b/QiaoJiaSystem/build/VideoAnalysFromHC index 6343aa6..260d802 100755 --- a/QiaoJiaSystem/build/VideoAnalysFromHC +++ b/QiaoJiaSystem/build/VideoAnalysFromHC Binary files differ diff --git a/QiaoJiaSystem/build/YoloDetectClientTest b/QiaoJiaSystem/build/YoloDetectClientTest index 216cd5e..3310f97 100755 --- a/QiaoJiaSystem/build/YoloDetectClientTest +++ b/QiaoJiaSystem/build/YoloDetectClientTest Binary files differ diff --git a/QiaoJiaSystem/build/YoloServer b/QiaoJiaSystem/build/YoloServer index 43d76f7..156a647 100755 --- a/QiaoJiaSystem/build/YoloServer +++ b/QiaoJiaSystem/build/YoloServer Binary files differ diff --git a/QiaoJiaSystem/build/config.json b/QiaoJiaSystem/build/config.json index f009670..9f0e3e5 100755 --- a/QiaoJiaSystem/build/config.json +++ b/QiaoJiaSystem/build/config.json @@ -1,26 +1,26 @@ { - "mainServerIp": "192.168.1.182", - "mainServerPort": "3697", - "logPath": "/home/basic/work/log/", - "DEV_ID": "DSVAD010120181119", - "ES_IP": "192.168.1.182", - "ES_PORT": 9200, - "FaceSeachSleepTime": 60, - "TotalLoadSize": "500", - "buildAddr": "/home/basic/Apps/QiaoJiaSystem/build/", - "cutPath": "/home/basic/work/qiaojia/cut", - "erlCookie": "", - "erlFatherNode": "", - "erlNode": "", - "erlPath": "", - "loadPath": "/home/basic/work/qiaojia/load", - "localPasswd": "123456", - "netIfName": "enp3s0", - "srsAddr": "rtmp://192.168.1.122:1934/live/", - "webPort": 11111, - "redis_ip": "127.0.0.1", - "redis_buf_len": 750, - "encode_thread_num": 2, - "FaceDetectionSampleSize": 720, - "clusterID" : "sssss" + "DEV_ID" : "DSVAD010120181119", + "ES_IP" : "192.168.1.182", + "ES_PORT" : 9200, + "FaceDetectionSampleSize" : 720, + "FaceSeachSleepTime" : 60, + "TotalLoadSize" : "500", + "buildAddr" : "/home/basic/Apps/QiaoJiaSystem/build/", + "clusterID" : "sssss", + "cutPath" : "/home/basic/work/qiaojia/cut", + "encode_thread_num" : 2, + "erlCookie" : "", + "erlFatherNode" : "", + "erlNode" : "", + "erlPath" : "", + "loadPath" : "/home/basic/work/qiaojia/load", + "localPasswd" : "123456", + "logPath" : "/home/basic/work/log/", + "mainServerIp" : "192.168.1.182", + "mainServerPort" : "3697", + "netIfName" : "enp3s0", + "redis_buf_len" : 750, + "redis_ip" : "127.0.0.1", + "srsAddr" : "rtmp://192.168.1.122:1934/live/", + "webPort" : 11111 } diff --git a/QiaoJiaSystem/build/killAll.sh b/QiaoJiaSystem/build/killAll.sh old mode 100644 new mode 100755 diff --git a/QiaoJiaSystem/build/syncDBClient b/QiaoJiaSystem/build/syncDBClient index 32115d0..01cc242 100755 --- a/QiaoJiaSystem/build/syncDBClient +++ b/QiaoJiaSystem/build/syncDBClient Binary files differ diff --git a/syncDBTool/ErlangDbTool.cpp b/syncDBTool/ErlangDbTool.cpp index 173fd83..b42a94b 100755 --- a/syncDBTool/ErlangDbTool.cpp +++ b/syncDBTool/ErlangDbTool.cpp @@ -190,7 +190,6 @@ // c erlang init erl_init(NULL, 0); - struct in_addr addr; addr.s_addr = inet_addr("127.0.0.1"); @@ -231,7 +230,6 @@ std::cout << m_ret << std::endl; // 鍒ゆ柇鑺傜偣鏄惁鍚姩鎴愬姛 m_ret = waitNode(); -// erl_close_connection(m_fd); resetConn(); return m_ret; } else { @@ -1623,6 +1621,7 @@ "Select a.uuid as id ,a.faceUrl as img,a.feature,b.idCard as idcard,b.enabled,b.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);"); + //Select a.uuid as id ,a.faceUrl as img,a.feature,b.idCard as idcard,b.enabled,b.monitorLevel from '0cd82a8b-5285-5737-ab19-8c07247c797e_fea' as a ,'0cd82a8b-5285-5737-ab19-8c07247c797e' 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()) { -- Gitblit v1.8.0