From f946a62d3921e86b44ff8e2973138304b9cd53cd Mon Sep 17 00:00:00 2001
From: chenshijun <csj_sky@126.com>
Date: 星期二, 16 四月 2019 16:36:32 +0800
Subject: [PATCH] 解决修改参数和推流画面跳跃问题

---
 QiaoJiaSystem/StructureApp/PerimeterElement.cpp |   47 +++++++++++++++++++++++------------------------
 1 files changed, 23 insertions(+), 24 deletions(-)

diff --git a/QiaoJiaSystem/StructureApp/PerimeterElement.cpp b/QiaoJiaSystem/StructureApp/PerimeterElement.cpp
index 49e86a4..7276844 100644
--- a/QiaoJiaSystem/StructureApp/PerimeterElement.cpp
+++ b/QiaoJiaSystem/StructureApp/PerimeterElement.cpp
@@ -13,7 +13,7 @@
 #include <uuid/uuid.h>
 #include <jsoncpp/json/json.h>
 
-#define ALARM_PERCENT (10)  //10%
+#define ALARM_PERCENT (25)  //25%
 PerimeterElement::PerimeterElement(const SdkRule &rule) :
     m_sdkRule(rule),
     PipeElement(true),
@@ -24,22 +24,18 @@
     pManagerEsDB(nullptr),
     m_bIsMask(true),
     m_bSetWH(false),
-    pointArray(nullptr)
-{
+    pointArray(nullptr),
+    m_rpcClient("RtspAnalysServer", "127.0.0.1", appPref.getIntData("RpcVTIMPort"), "tcp") {
 
     pManagerEsDB = new EsDBTool(appPref.getStringData("ipAdd"), appPref.getIntData("ipPort"));
 }
 
-PerimeterElement::PerimeterElement(const SdkRule &rule,SaveVideoRpcClient_t &rpcClient):PerimeterElement(rule){
-    m_rpcClient=rpcClient;
-}
 PerimeterElement::~PerimeterElement() {
     if (pManagerEsDB) {
         delete pManagerEsDB;
         pManagerEsDB = nullptr;
     }
-    if(pointArray)
-    {
+    if (pointArray) {
 //        delete[] pointArray[0];
         delete[] pointArray;
     }
@@ -64,7 +60,7 @@
     m_recVec.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;
 
@@ -76,9 +72,8 @@
             // DBG("picDate="<<picDate);
 
         }
-        if(imgKey.empty())
-        {
-            imgKey =obj.properties["imgKey"];
+        if (imgKey.empty()) {
+            imgKey = obj.properties["imgKey"];
         }
         if (m_sdkRule.nSdkType == PerimeterSdk)
         {
@@ -126,17 +121,17 @@
             //state = num > 0 ;
             state =( num !=mRealNum);
           //  DBG("num="<<num<< "time="<< picDate);
-            INFO("SDK Type: PerimeterSdk");
+//            INFO("SDK Type: PerimeterSdk");
 
             break;
         case CrowdSdk:
             state = num > m_sdkRule.nAlarmNumLowerLimit && num !=mRealNum;
-            INFO("SDK Type: CrowdSdk");
+//            INFO("SDK Type: CrowdSdk");
 
             break;
         case PerHubSdk:
             state = num > m_sdkRule.nAlarmNumLowerLimit && num < m_sdkRule.nAlarmNumUpperLimit && num !=mRealNum;
-            INFO("SDK Type: PerHubSdk");
+//            INFO("SDK Type: PerHubSdk");
 
 //         if(m_sdkRule.nAlarmNumLowerLimit>=0)
 //         {
@@ -168,10 +163,10 @@
         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.setState(state);
     m_triggerElement.triggerOnce();
-    if (m_triggerElement.getTriggerState() )
+    if (m_triggerElement.getTriggerState())
     {
         if(num > 0) {
             if(pointArray!=nullptr)
@@ -180,7 +175,7 @@
 
                 int npt[]={npts};
 
-                cv::polylines(image, ppt,npt, 1, true,cv::Scalar(255,255,0));
+                cv::polylines(image, ppt,npt, 1, true,cv::Scalar(255,255,0), 2);
             }
 
             for(auto rect:m_recVec)
@@ -196,8 +191,12 @@
             std::string imgUrl = uploadImgToFdfs(image);
             saveInfoToEs(imgUrl, picDate,imgKey);
         }
-        DBG("num=" << num << " lastnum=" << mRealNum);
+//        DBG("num=" << num << " lastnum=" << mRealNum);
         mRealNum = num;
+
+        //todo 閲嶇疆鎶ヨtrigger
+        m_triggerElement.setState(false);
+        m_triggerElement.triggerOnce();
     }
 
 //    if (m_triggerElement.getTriggerState() && num!=mRealNum)
@@ -283,8 +282,8 @@
         {
              mPolygon << (QPoint(x, y));
         }
-        DBG("width="<<sizeW);
-        DBG("height="<<sizeH);
+//        DBG("width="<<sizeW);
+//        DBG("height="<<sizeH);
 
 
     }
@@ -293,7 +292,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();
@@ -390,7 +389,7 @@
         if (!server)
         {
             ERR("server is null");
-            return false;
+            //return false;
         }
         INFO("Record Video "<<imgKey);
         server->recordVideo(imgKey);
@@ -398,7 +397,7 @@
     catch (std::exception &e)
     {
         ERR("Record Video Err: "<<imgKey <<"   Message: "<<e.what());
-        return false;
+        //return false;
     }
     INFO("SaveImgKeyToES: "<<imgKey);
     bool retface = false;

--
Gitblit v1.8.0