From d3b7bbe7102cd089680a828f5d8f6402c8cf6342 Mon Sep 17 00:00:00 2001 From: pansen <pansen626@sina.com> Date: 星期四, 07 三月 2019 14:43:28 +0800 Subject: [PATCH] GB28181集成完成,集成推流模块 --- QiaoJiaSystem/StructureApp/PerStaticElement.cpp | 160 +++++++++++++++++++++++++++++++++-------------------- 1 files changed, 99 insertions(+), 61 deletions(-) diff --git a/QiaoJiaSystem/StructureApp/PerStaticElement.cpp b/QiaoJiaSystem/StructureApp/PerStaticElement.cpp index 4dbcf92..4d9f1d3 100644 --- a/QiaoJiaSystem/StructureApp/PerStaticElement.cpp +++ b/QiaoJiaSystem/StructureApp/PerStaticElement.cpp @@ -16,7 +16,8 @@ m_sdkRule(rule), m_triggerElement(0,0), m_lTime(AppUtil::getCurrentUs()), -pManagerEsDB(nullptr) +pManagerEsDB(nullptr), +m_bIsMask(true) { pManagerEsDB=new EsDBTool(appPref.getStringData("ipAdd"), appPref.getIntData("ipPort")); @@ -35,7 +36,7 @@ void PerStaticElement::threadInitial() { - setMask(m_sdkRule.strAreas.toStdString()); +// setMask(m_sdkRule.strAreas.toStdString()); } @@ -45,22 +46,42 @@ if(!isInWeek(m_sdkRule.weekRuleVec)) return; int num=0; - - - for(auto obj:mObjs) + bool state=false; + time_t now= AppUtil::getCurrentUs(); + for(auto& obj:mObjs) { if(obj.score < m_sdkRule.fSensitivity)continue; QRect rect(obj.rect.x,obj.rect.y,obj.rect.width,obj.rect.height); QPoint center = rect.center(); - if(mPolygon.containsPoint(center,Qt::OddEvenFill)) + if(mPolygon.containsPoint(center,Qt::OddEvenFill) || !m_bIsMask) { - for(auto score:m_lastScoreRect) + for(auto ele:m_lastScoreRect) { - if(obj.id == score.id) + if(obj.id == ele.id && (obj.rect&ele.rect).area()>ele.rect.area()*m_sdkRule.fSensitivity) { - obj.isMove = score.isMove; + if(obj.times ==0) + { + obj.times=AppUtil::getCurrentUs(); + } + else if( (now-obj.times)>m_sdkRule.nTriggerDelay*60*1000*1000) + { + DBG("now-obj.times="<<now-obj.times); + if(pointArray!=nullptr) + { + const cv::Point2i* ppt[1] = { pointArray }; + + int npt[]={npts}; + + cv::polylines(image, ppt,npt, 1, true,cv::Scalar(255,255,0)); + } + cv::rectangle(image, obj.rect, cv::Scalar(0, 0, 255), 2); + auto t_image = image(CvUtil::zoomRectEqual(obj.rect, 1.2, 1.2) & cv::Rect(0, 0, image.cols, image.rows)).clone(); + std::string imgUrl=uploadImgToFdfs(t_image); + saveInfoToEs(imgUrl,obj); + obj.times=0; + } //DBG("moving? "<<_TrackingInfo.m_bMoveState) break; } @@ -70,43 +91,47 @@ } } - if((AppUtil::getCurrentUs()-m_lTime)>(m_sdkRule.nTriggerDelay*60*1000*1000)) - { - for(auto& obj: mObjs){ - - //compare with last temp memery and clear temp memery - for(auto ele:m_lastScoreRect) - { - if(ele.id==obj.id) - { - if((obj.rect&ele.rect).area()>ele.rect.area()*0.8) - { - //not moving - obj.isMove = true; - - auto t_image = image(CvUtil::zoomRectEqual(obj.rect, 1.2, 1.2) & cv::Rect(0, 0, image.cols, image.rows)).clone(); - std::string imgUrl=uploadImgToFdfs(t_image); - saveInfoToEs(imgUrl,obj); - m_triggerElement.setState(true); - //DBG("not moving") - } - else - { - obj.isMove = false; - m_triggerElement.setState(false); - //DBG("moving") - } - break; - } - } - //do temp memery - - } - m_lastScoreRect = mObjs; - m_lTime =AppUtil::getCurrentUs(); - } m_lastScoreRect=mObjs; - m_triggerElement.triggerOnce(); +// if((AppUtil::getCurrentUs()-m_lTime)>(m_sdkRule.nTriggerDelay*60*1000*1000)) +// { +// for(auto& obj: mObjs){ + +// //compare with last temp memery and clear temp memery +// for(auto ele:m_lastScoreRect) +// { +// if(ele.id==obj.id) +// { +// if((obj.rect&ele.rect).area()>ele.rect.area()*m_sdkRule.fSensitivity) +// { +// //not moving +// obj.isMove = true; + +// auto t_image = image(CvUtil::zoomRectEqual(obj.rect, 1.2, 1.2) & cv::Rect(0, 0, image.cols, image.rows)).clone(); +// std::string imgUrl=uploadImgToFdfs(t_image); +// saveInfoToEs(imgUrl,obj); +// m_triggerElement.setState(true); +// //DBG("not moving") +// } +// else +// { +// obj.isMove = false; +// m_triggerElement.setState(false); +// //DBG("moving") +// } +// break; +// } +// } +// //do temp memery + +// } +// // m_lastScoreRect = mObjs; +// m_lTime =AppUtil::getCurrentUs(); +// } + +// m_lastScoreRect=mObjs; + + m_triggerElement.setState(true); + m_triggerElement.triggerOnce(); fireConnectors(); @@ -144,16 +169,23 @@ QJsonArray arrayAreas = getJsonArrayFromQString(QString::fromStdString(mask)); if(arrayAreas.isEmpty()) { + m_bIsMask=false; return;//do not detect } + int size=arrayAreas.size(); + npts=size; + pointArray=new cv::Point2i[size]; + float sizeW=(float)appPref.getIntData(m_sdkRule.strCamId.toStdString()+"width")/480; + float sizeH=(float)appPref.getIntData(m_sdkRule.strCamId.toStdString()+"height")/270; for(int i = 0;i < arrayAreas.size();++i) { QJsonValue jsonValue = arrayAreas[i]; QJsonObject obj = jsonValue.toObject(); - int x = obj.value("x").toDouble()*4; - int y = obj.value("y").toDouble()*4; + int x = obj.value("x").toDouble() *sizeW; + int y = obj.value("y").toDouble() *sizeH; mPolygon<<(QPoint(x,y)); - + DBG("width="<<sizeW); + DBG("height="<<sizeH); } } QJsonArray PerStaticElement::getJsonArrayFromQString(const QString& strJson) @@ -180,7 +212,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); @@ -208,36 +240,37 @@ t_json["sdkType"] =to_string(m_sdkRule.nSdkType); // t_json["Gender"] = obj.score; - t_json["picName"] = "wait todo";// 鎶撴媿鐓х墖鍚嶇О - t_json["content"] = "wait todo";// 鍐呭鎻忚堪 + t_json["picName"] = "";// 鎶撴媿鐓х墖鍚嶇О + t_json["content"] = "";// 鍐呭鎻忚堪 t_json["personPicUrl"] = "";// 浜哄憳 鍦板簱鍥剧墖 t_json["ChannlId"] = getProperty("ch_id"); // 閫氶亾id t_json["likeDate"] =AppUtil::getTimeSecString(); // 姣斿鏃堕棿 - t_json["picAddress"] =getProperty("str_addr");// 鎶撴媿鍦板潃 - t_json["picMaxUrl"] = "wait todo"; // 澶у浘璺緞 + t_json["picAddress"] =m_sdkRule.strAddr.toStdString();// 鎶撴媿鍦板潃 + t_json["picMaxUrl"] = ""; // 澶у浘璺緞 - // t_json["Age"] ="wait todo"; + // t_json["Age"] =""; t_json["picDate"] = obj.properties["time"]; // 鎶撴媿鏃堕棿锛屽繀椤绘湁 - t_json["picLocalUrl"] = "wait todo"; // 鏈湴璺緞 + t_json["picLocalUrl"] = ""; // 鏈湴璺緞 t_json["isDelete"] = "1";//榛樿1 ,0鏃犳晥 1鏈夋晥 - t_json["likePer"] = obj.score; // 鐩镐技鍊� + t_json["likePer"] = 1.0; // 鐩镐技鍊� - t_json["BaseName"] = "wait todo";// 鍦板簱鍚嶇О + t_json["BaseName"] = "";// 鍦板簱鍚嶇О t_json["videoNum"] = m_sdkRule.strCamId.toStdString();//Video璁惧缂栧彿 t_json["picSmUrl"] = imgUrl; // 鎶撴媿鍥剧墖 t_json["indeviceid"] = appPref.getStringData("fxDevID");;// 璁惧id - t_json["idcard"] = "wait todo"; - t_json["personId"] = "wait todo"; + t_json["idcard"] = ""; + t_json["personId"] = ""; t_json["indevicename"] = appPref.getStringData("fxDevNAME");// 璁惧鍚嶇О t_json["FaceFeature"] = "base64"; t_json["personIsHub"] = m_triggerElement.getTriggerState()?"1":"4"; //1: 鎶ヨ 2: 鍙枒 3: 瀹夊叏 4: 鏈煡 t_json["videoIp"] = m_sdkRule.strAddr.toStdString(); // 璁惧ip t_json["ack_alarm"]=m_triggerElement.getTriggerState()?"0":""; // que ren shi fou bao jing - t_json["cluster_id"]="wait todo"; // ji qun id - + t_json["cluster_id"]=appPref.getStringData("clusterID");; // ji qun id + t_json["imgKey"] = obj.properties["imgKey"]; + INFO("SaveImgKeyToES: "<<obj.properties["imgKey"]); bool retface = false; if(pManagerEsDB) retface = pManagerEsDB->insertData("personaction", "perVideoAction", t_json.toStyledString(), str_uuid); @@ -271,4 +304,9 @@ { value.copyTo(image); + if(!m_bSetWH) + { + setMask(m_sdkRule.strAreas.toStdString()); + m_bSetWH=true; + } } -- Gitblit v1.8.0