From abd9036f024a77d22b47a108bc88b27b9732e3c5 Mon Sep 17 00:00:00 2001 From: zhangjixing <775834166@qq.com> Date: 星期二, 15 一月 2019 17:27:27 +0800 Subject: [PATCH] --- QiaoJiaSystem/StructureApp/PerimeterElement.cpp | 63 +++++++++++++++++++++++-------- 1 files changed, 46 insertions(+), 17 deletions(-) diff --git a/QiaoJiaSystem/StructureApp/PerimeterElement.cpp b/QiaoJiaSystem/StructureApp/PerimeterElement.cpp index 27d4716..5e480ee 100644 --- a/QiaoJiaSystem/StructureApp/PerimeterElement.cpp +++ b/QiaoJiaSystem/StructureApp/PerimeterElement.cpp @@ -18,9 +18,10 @@ PipeElement(true), trackingTrigger(nullptr), mRealNum(0), - m_triggerElement(0, rule.nTriggerDelay * 1000 * 1000), + m_triggerElement(rule.nTriggerDelay*8,0), pManagerEsDB(nullptr), - npts(0) { + m_bIsMask(true) +{ pManagerEsDB = new EsDBTool(appPref.getStringData("ipAdd"), appPref.getIntData("ipPort")); } @@ -40,6 +41,7 @@ void PerimeterElement::threadFunc() { + // ClockTimer ct("PerimeterElement::threadFunc"); if (!isInWeek(m_sdkRule.weekRuleVec)) return; int num = 0; @@ -55,7 +57,7 @@ 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) { m_recVec.push_back(obj.rect); if (picDate.empty()) { picDate = obj.properties["time"]; @@ -67,22 +69,26 @@ } + else + { + // DBG("id="<< obj.properties["id"]<<" no containts x="<<rect.center().x()<<" y="<<rect.center().y()); + } } switch (m_sdkRule.nSdkType) { case PerimeterSdk: - state = num > 0 && num != mRealNum; + state = num > 0 ; break; case CrowdSdk: - state = num > m_sdkRule.nAlarmNumLowerLimit && num != mRealNum; + state = num > m_sdkRule.nAlarmNumLowerLimit ; break; case PerHubSdk: - state = num > m_sdkRule.nAlarmNumLowerLimit && num < m_sdkRule.nAlarmNumUpperLimit && num != mRealNum; + state = num > m_sdkRule.nAlarmNumLowerLimit && num < m_sdkRule.nAlarmNumUpperLimit ; // if(m_sdkRule.nAlarmNumLowerLimit>0) // { // if( m_sdkRule.nAlarmNumUpperLimit>m_sdkRule.nAlarmNumLowerLimit+1) @@ -113,21 +119,38 @@ default: break; } - m_triggerElement.setState(state); + m_triggerElement.setState(state); + m_triggerElement.triggerOnce(); // DBG("imgUrl="<<imgUrl); - if (state) { - auto t_image = image(CutMask()).clone(); + if (m_triggerElement.getTriggerState() && num!=mRealNum) + { + + cv::Mat t_image = image(CutMask()).clone(); + if(t_image.empty()) + { + if(image.empty()) + { + DBG("image empty"); + } + DBG("t_image empty"); + return; + } std::string imgUrl = uploadImgToFdfs(t_image); saveInfoToEs(imgUrl, picDate); DBG("num=" << num << " lastnum=" << mRealNum); + mRealNum = num; + } +// if(state) +//DBG("mRealNum=" << mRealNum <<"m_triggerElement.getTriggerState()="<<m_triggerElement.getTriggerState()); + + if(!state) + { + mRealNum = num; } - m_triggerElement.triggerOnce(); - - mRealNum = num; // DBG("m_sdkRule.nSdkType="<<m_sdkRule.nSdkType<<" num="<<num); fireConnectors(); } @@ -164,7 +187,8 @@ void PerimeterElement::setMask(std::string mask) { QJsonArray arrayAreas = getJsonArrayFromQString(QString::fromStdString(mask)); - if (arrayAreas.isEmpty()) { + if (arrayAreas.isEmpty() && m_sdkRule.nSdkType != PerimeterSdk) { + m_bIsMask=false; return;//do not detect } int size = arrayAreas.size(); @@ -210,7 +234,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); @@ -243,13 +267,14 @@ t_json["personPicUrl"] = "";// 浜哄憳 鍦板簱鍥剧墖 t_json["ChannlId"] = getProperty("ch_id"); // 閫氶亾id t_json["likeDate"] = AppUtil::getTimeSecString(); // 姣斿鏃堕棿 - t_json["picAddress"] = getProperty("str_addr");// 鎶撴媿鍦板潃 + t_json["picAddress"] = m_sdkRule.strAddr.toStdString();// 鎶撴媿鍦板潃 + DBG("picAddress="<<m_sdkRule.strAddr.toStdString()); t_json["picMaxUrl"] = "wait todo"; // 澶у浘璺緞 // t_json["Age"] ="wait todo"; t_json["picDate"] = time; // 鎶撴媿鏃堕棿锛屽繀椤绘湁 - // DBG("picDate="<<time); + DBG("picDate="<<time); t_json["picLocalUrl"] = "wait todo"; // 鏈湴璺緞 t_json["isDelete"] = "1";//榛樿1 ,0鏃犳晥 1鏈夋晥 @@ -267,7 +292,7 @@ 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 bool retface = false; if (pManagerEsDB) @@ -341,3 +366,7 @@ // DBG("RECT x="<<rect.x<<"y"<<rect.y<<"w"<<rect.width<<"h"<<rect.height); return rect; } +bool PerimeterElement::isAnd() +{ + +} -- Gitblit v1.8.0