From 59408e43480b48b6acd6e76641ff1a97811e7ab5 Mon Sep 17 00:00:00 2001
From: pansen <pansen626@sina.com>
Date: 星期四, 10 一月 2019 18:19:49 +0800
Subject: [PATCH] 修改yoloServer 优化多线程?

---
 QiaoJiaSystem/StructureApp/AppPipeController.cpp |  152 +++++++++-----------------------------------------
 1 files changed, 29 insertions(+), 123 deletions(-)

diff --git a/QiaoJiaSystem/StructureApp/AppPipeController.cpp b/QiaoJiaSystem/StructureApp/AppPipeController.cpp
index 2a0062d..2d89d86 100644
--- a/QiaoJiaSystem/StructureApp/AppPipeController.cpp
+++ b/QiaoJiaSystem/StructureApp/AppPipeController.cpp
@@ -36,17 +36,16 @@
     faceRpcElement(camId + "faceRpc"),
     m_json(json),
     faceExtractElement(camId + "faceExtract"),
-   // peTriggerElement(json["perimeter.tolerance"].asInt(), json["perimeter.delay"].asInt()),
+    // peTriggerElement(json["perimeter.tolerance"].asInt(), json["perimeter.delay"].asInt()),
 //    leftTriggerElement(json["keepRight.tolerance"].asInt(), json["keepRight.delay"].asInt()),
 //    rightTriggerElement(json["keepRight.tolerance"].asInt(), json["keepRight.delay"].asInt()),
-   // crowdTriggerElement(json["crowd.tolerance"].asInt(), json["crowd.delay"].asInt()),
+    // crowdTriggerElement(json["crowd.tolerance"].asInt(), json["crowd.delay"].asInt()),
     triggerElement(25, 4),
     recordVideoElement(camId, json["rtsp"].asString()),
     newRecordVideoElement(camId),
     perimeterElement(1),
     crowdElement(json["crowd.num"].asInt()),
-    bRecordVideoEnable(RecordVideoEnable)
-{
+    bRecordVideoEnable(RecordVideoEnable) {
     init();
     initPerimeter();
     initCrowd();
@@ -54,10 +53,7 @@
 }
 
 AppPipeController::~AppPipeController() {
-      if(recordStatus==RECORD_DOING)
-      {
-          newRecordVideoElement.endRecord();
-      }
+
 }
 
 //************************************
@@ -155,23 +151,32 @@
     }
 
 
-   //#todo
-  //  int max=appPref.getIntData("n_cut_max_duration");
-    recordInit(20,100);
+    //#todo
+    //  int max=appPref.getIntData("n_cut_max_duration");
+    // recordInit(40,100);
     videoCaptureElement.registerConnector([&] {
 
-
+        cv::Mat imageTemp = videoCaptureElement.getImage();
 
         std::string strNewTime;
+        strNewTime = AppUtil::getTimeUSecString();
+
+        cv::putText(imageTemp, strNewTime, cv::Point(408, 540), cv::HersheyFonts::FONT_HERSHEY_PLAIN, 5,
+                    cv::Scalar(255, 255, 0), 2);
         if (m_camId.size() > 0) {
-            strNewTime = AppUtil::getTimeUSecString();
 
-            if(bRecordVideoEnable)
-            {
-                newRecordVideoElement.pushImgBuf(strNewTime,videoCaptureElement.getImage());
-                setSdkTrigger();
 
-                doRecord();
+            if (bRecordVideoEnable) {
+                DBG("strNewTime="<<strNewTime<<" camId="<<m_camId);
+                newRecordVideoElement.pushImgBuf(strNewTime, imageTemp);
+                newRecordVideoElement.setSdkTrigger(faceRpcElement.getTriggerState() ||//TODO
+                                                    yoloRpcElement.getTrigger() ||
+                                                    leftJudgment.getTriggerState() ||
+                                                    rightJudgment.getTriggerState() ||
+                                                    perimeterElement.getTriggerState() ||
+                                                    crowdElement.getTriggerState());
+               // newRecordVideoElement.submit();
+
             }
 
         } else {
@@ -193,7 +198,7 @@
             //#todo
             faceRpcElement.setProperty("time", strNewTime);
 //            faceRpcElement.setProperty("time", uuid);
-            faceRpcElement.setImage(videoCaptureElement.getImage());
+            faceRpcElement.setImage(imageTemp);
             faceRpcElement.submit();
         }
 
@@ -201,12 +206,12 @@
 //            yoloRpcElement.setProperty("uuid", uuid);
             //#todo
             yoloRpcElement.setProperty("time", strNewTime);
-            yoloRpcElement.setImage(videoCaptureElement.getImage());
+            yoloRpcElement.setImage(imageTemp);
             yoloRpcElement.submit();
         }
 
         if (!imageDrawElement.isBusy()) {
-            imageDrawElement.setImage(videoCaptureElement.getImage());
+            imageDrawElement.setImage(imageTemp);
             imageDrawElement.submit();
         }
 
@@ -253,7 +258,7 @@
         registerElement(faceExtractElement);
     }
     registerElement(imageDrawElement);
-
+    registerElement(newRecordVideoElement);
     videoCaptureElement.setOutPutInterval(3);
     faceExtractElement.setProperty("index", to_string(m_index));
     //#todo setProperty
@@ -319,7 +324,7 @@
     //area="[{\"x\":100,\"y\":6},{\"x\":100,\"y\":1200},{\"x\":1800,\"y\":1200},{\"x\":1800,\"y\":6}]";
     perimeterElement.setMask(area);
     perimeterElement.setFdfs(fdfsClient);
-    perimeterElement.setProperty("sdkType","perimeter");
+    perimeterElement.setProperty("sdkType", "perimeter");
     yoloRpcElement.registerConnector([&] {
         if (!perimeterElement.isBusy()) {
 
@@ -356,7 +361,7 @@
     //area="[{\"x\":100,\"y\":6},{\"x\":100,\"y\":1200},{\"x\":1800,\"y\":1200},{\"x\":1800,\"y\":6}]";
     crowdElement.setMask(area);
     crowdElement.setFdfs(fdfsClient);
-    crowdElement.setProperty("sdkType","crowd");
+    crowdElement.setProperty("sdkType", "crowd");
     yoloRpcElement.registerConnector([&] {
         if (!crowdElement.isBusy()) {
             crowdElement.setObjsResults(yoloRpcElement.getObjects());
@@ -405,104 +410,5 @@
     registerElement(leftJudgment);
     registerElement(rightJudgment);
 
-}
-
-
-//================
-void AppPipeController::recordInit(int videoMin, int videoMax) {
-    sdkTrigger = false;
-    fileMin = videoMin;
-    fileMax = videoMax;
-    triggerDelay = fileMin/2;
-
-    recordStatus = RECORD_STOP;
-    videoLength = 0;
-    recordDelay = 0;
-}
-
-void AppPipeController::setSdkTrigger() {
-    if( faceRpcElement.getTriggerState() ||//TODO
-        yoloRpcElement.getTrigger() ||
-        leftJudgment.getTriggerState()||
-        rightJudgment.getTriggerState() ||
-        perimeterElement.getTriggerState() ||
-        crowdElement.getTriggerState()
-            ){
-        triggerDelay = 0;
-        sdkTrigger = true;
-    } else{
-        if(triggerDelay++ >= fileMin/2) {
-            sdkTrigger = false;
-        }
-        else{
-            sdkTrigger = true;
-        }
-    }
-}
-
-void AppPipeController::doRecord() {
-    switch(recordStatus)
-    {
-        case RECORD_STOP:
-//        DBG("recordDelay:" << recordDelay);
-//        DBG("videoLength:" << videoLength);
-//        DBG("sdkTrigger:" << sdkTrigger);
-            videoLength = 0;
-            recordDelay = 0;
-            if(sdkTrigger){
-                recordStatus = RECORD_DOING;
-                newRecordVideoElement.startRecord();
-            }
-            else
-            {
-                ImgInfo info;
-                newRecordVideoElement.getImg(info);
-            }
-            break;
-
-        case RECORD_DOING:
-            videoLength++;
-            if(sdkTrigger){
-                if(videoLength < fileMax){
-                    newRecordVideoElement.doRecord();
-                }
-                else{
-                    recordStatus = RECORD_STOP;
-                    newRecordVideoElement.endRecord();
-                }
-            }else{
-                recordStatus = RECORD_ENDING;
-                newRecordVideoElement.doRecord();
-            }
-            break;
-
-        case RECORD_ENDING:
-            DBG("recordDelay:" << recordDelay);
-            DBG("videoLength:" << videoLength);
-            DBG("sdkTrigger:" << sdkTrigger);
-            recordDelay++;
-            videoLength++;
-            if(sdkTrigger){
-                if( (recordDelay < fileMin/4) &&
-                    (videoLength < fileMax)){
-                    newRecordVideoElement.doRecord();
-                }else{
-                    recordStatus = RECORD_STOP;
-                    newRecordVideoElement.endRecord();
-                }
-            }else{
-                if( (recordDelay < fileMin/2) &&
-                    (videoLength < fileMax)){
-                    newRecordVideoElement.doRecord();
-                }else{
-                    recordStatus = RECORD_STOP;
-                    newRecordVideoElement.endRecord();
-                }
-            }
-            break;
-
-        default:
-            break;
-    }
 }
 

--
Gitblit v1.8.0