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 |  156 ++++++++++++++++++++++++++++++++-------------------
 1 files changed, 97 insertions(+), 59 deletions(-)

diff --git a/QiaoJiaSystem/StructureApp/PerStaticElement.cpp b/QiaoJiaSystem/StructureApp/PerStaticElement.cpp
index 5d3de33..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"] =m_sdkRule.strAddr.toStdString();// 鎶撴媿鍦板潃
-    t_json["picMaxUrl"] = "wait todo"; // 澶у浘璺緞
+    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"]=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