From 53630c440d592792dcdd86f8d5b2c59da4f3c359 Mon Sep 17 00:00:00 2001 From: pans <pansen626@sina.com> Date: 星期一, 28 一月 2019 20:35:35 +0800 Subject: [PATCH] Merge branch 'ywv1.2' into ywv1.2_布控feature --- QiaoJiaSystem/StructureApp/PerimeterElement.cpp | 94 ++++++++++++++++++++++++++++++++-------------- 1 files changed, 65 insertions(+), 29 deletions(-) diff --git a/QiaoJiaSystem/StructureApp/PerimeterElement.cpp b/QiaoJiaSystem/StructureApp/PerimeterElement.cpp index ca48b0f..432adf7 100644 --- a/QiaoJiaSystem/StructureApp/PerimeterElement.cpp +++ b/QiaoJiaSystem/StructureApp/PerimeterElement.cpp @@ -22,7 +22,10 @@ mRealNum(0), m_triggerElement(rule.nTriggerDelay * 8, 0), pManagerEsDB(nullptr), - m_bIsMask(true) { + m_bIsMask(true), + m_bSetWH(false), + pointArray(nullptr) +{ pManagerEsDB = new EsDBTool(appPref.getStringData("ipAdd"), appPref.getIntData("ipPort")); } @@ -32,11 +35,16 @@ delete pManagerEsDB; pManagerEsDB = nullptr; } + if(pointArray) + { +// delete[] pointArray[0]; + delete[] pointArray; + } } void PerimeterElement::threadInitial() { - setMask(m_sdkRule.strAreas.toStdString()); +// setMask(m_sdkRule.strAreas.toStdString()); } @@ -50,7 +58,7 @@ bool state = false; m_recVec.clear(); - // DBG("Objs="<<mObjs.size()<<" fSensitivity="<<m_sdkRule.fSensitivity<<" nThreshold"<<m_sdkRule.nThreshold); +// DBG("Objs="<<mObjs.size()<<" fSensitivity="<<m_sdkRule.fSensitivity<<" nThreshold"<<m_sdkRule.nThreshold); for (auto obj:mObjs) { @@ -98,6 +106,7 @@ } + switch (m_sdkRule.nSdkType) { case PerimeterSdk: @@ -148,14 +157,29 @@ m_triggerElement.setState(state); m_triggerElement.triggerOnce(); - if (m_triggerElement.getTriggerState()) { - if (num > 0) { - cv::Mat t_image = image(CutMask()).clone(); - if (t_image.empty()) { - DBG("t_image empty"); - return; + if (m_triggerElement.getTriggerState() ) + { + if(num > 0) { + if(pointArray!=nullptr) + { + const cv::Point2i* ppt[1] = { pointArray }; + + int npt[]={npts}; + + cv::polylines(image, ppt,npt, 1, true,cv::Scalar(255,255,0)); } - std::string imgUrl = uploadImgToFdfs(t_image); + + for(auto rect:m_recVec) + { + cv::rectangle(image, rect, cv::Scalar(0, 0, 255), 2); + } +// cv::Mat t_image = image(CutMask()).clone(); +// if(t_image.empty()) +// { +// DBG("t_image empty"); +// return; +// } + std::string imgUrl = uploadImgToFdfs(image); saveInfoToEs(imgUrl, picDate); } DBG("num=" << num << " lastnum=" << mRealNum); @@ -227,17 +251,26 @@ } 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]; for (int i = 0; i < size; ++i) { QJsonValue jsonValue = arrayAreas[i]; QJsonObject obj = jsonValue.toObject(); - int x = obj.value("x").toDouble() * 4; - int y = obj.value("y").toDouble() * 4; - if (m_sdkRule.nSdkType == PerimeterSdk) { - poly1.push_back(Point(x, y)); - } else { - mPolygon << (QPoint(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)); + } + DBG("width="<<sizeW); + DBG("height="<<sizeH); } @@ -258,6 +291,12 @@ // image = cv::Mat(value.rows, value.cols, CV_8UC3, sharedMemory->data()); // } value.copyTo(image); + if(!m_bSetWH) + { + setMask(m_sdkRule.strAreas.toStdString()); + m_bSetWH=true; + } + } bool PerimeterElement::getTriggerState() const { @@ -300,31 +339,31 @@ // DBG("to_string(m_sdkRule.nSdkType)="<<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"] = m_sdkRule.strAddr.toStdString();// 鎶撴媿鍦板潃 - DBG("picAddress=" << m_sdkRule.strAddr.toStdString()); - t_json["picMaxUrl"] = "wait todo"; // 澶у浘璺緞 + DBG("picAddress="<<m_sdkRule.strAddr.toStdString()); + t_json["picMaxUrl"] = ""; // 澶у浘璺緞 // t_json["Age"] ="wait todo"; t_json["picDate"] = time; // 鎶撴媿鏃堕棿锛屽繀椤绘湁 - DBG("picDate=" << time); - t_json["picLocalUrl"] = "wait todo"; // 鏈湴璺緞 + DBG("picDate="<<time); + t_json["picLocalUrl"] = ""; // 鏈湴璺緞 t_json["isDelete"] = "1";//榛樿1 ,0鏃犳晥 1鏈夋晥 - t_json["likePer"] = "0"; // 鐩镐技鍊� + 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: 鏈煡 @@ -405,6 +444,3 @@ return rect; } -bool PerimeterElement::isAnd() { - -} -- Gitblit v1.8.0