派生自 development/c++

pansen
2019-03-07 d3b7bbe7102cd089680a828f5d8f6402c8cf6342
QiaoJiaSystem/StructureApp/AppPipeController.cpp
@@ -19,6 +19,7 @@
//}
AppPipeController::AppPipeController(std::string folderPath, const SdkRuleMap &ruleMap) :
    m_rpcClient("RtspAnalysServer", "127.0.0.1",appPref.getIntData("RpcServerPort"),"tcp"),
    videoCaptureElement("filePath", 25, -1, appPref.getLongData("gpu.index")),
//    videoCaptureElement(40),
    m_index(0),
@@ -29,9 +30,10 @@
    faceRpcElement(folderPath + "faceRpc", ruleMap[FaceSdk]),
    faceExtractElement(folderPath + "faceExtract", ruleMap[FaceSdk]),
    triggerElement(25, 10),
    recordVideoElement(-1, ""),
//    recordVideoElement(-1, ""),
    bRecordVideoEnable(false),
    rpcClient("RtspAnalysServer", "127.0.0.1",10009,"tcp")
    m_bSetWH(false)
{
    init();
@@ -68,6 +70,7 @@
//    intKeepRight();
//}
AppPipeController::AppPipeController(std::string camId, const SdkRuleMap &ruleMap, bool RecordVideoEnable) :
    m_rpcClient("RtspAnalysServer", "127.0.0.1",appPref.getIntData("RpcServerPort"),"tcp"),
    videoCaptureElement(appPref.getStringData(camId + "rtsp"), 25, 3000, appPref.getLongData("gpu.index")),
//    videoCaptureElement(40),
    m_index(0),
@@ -77,8 +80,8 @@
    faceRpcElement(camId + "faceRpc", ruleMap[FaceSdk]),
    faceExtractElement(camId + "faceExtract", ruleMap[FaceSdk]),
    triggerElement(25, 4),
    recordVideoElement(camId, appPref.getStringData(camId + "rtsp")),
    newRecordVideoElement(camId),
//    recordVideoElement(camId, appPref.getStringData(camId + "rtsp")),
//    newRecordVideoElement(camId),
    perimeterElement(ruleMap[PerimeterSdk]),
    crowdElement(ruleMap[CrowdSdk]),
    perStaticElement(ruleMap[PerStaticSdk]),
@@ -87,7 +90,6 @@
    rightJudgment(ruleMap[KeepRightSdk]),
    bRecordVideoEnable(RecordVideoEnable),
    m_sdkRuleMap(ruleMap),
    rpcClient("RtspAnalysServer", "127.0.0.1",10009,"tcp"),
    m_bSetWH(false)
  {
@@ -176,6 +178,57 @@
string test_str;
void AppPipeController::RecordVideo() {
    /*std::string imgKeyYolo = yoloRpcElement.getProperty("imgKey");
    std::string imgKeyFace = faceRpcElement.getProperty("imgKey");
    if(faceRpcElement.getTriggerState() ||
       personElement.getTriggerState() ||
       leftJudgment.getTriggerState() ||
       rightJudgment.getTriggerState() ||
       perimeterElement.getTriggerState() ||
       crowdElement.getTriggerState() ||
       perHubElement.getTriggerState() ||
       perStaticElement.getTriggerState())
    {
        try {
            auto server = rpcClient.getServer();
            if (!server)
            {
                ERR("server is null");
                return;
            }
            if(imgKeyFace != imgKeyYolo)
            {
                server->recordVideo(imgKeyFace);
                server->recordVideo(imgKeyYolo);
                INFO("Record Video Face: "<<imgKeyFace);
                INFO("Record Video Yolo: "<<imgKeyYolo);
            } else {
                INFO("Record Video: "<<imgKeyYolo);
                server->recordVideo(imgKeyFace);
            }
        }
        catch (std::exception &e)
        {
            ERR("Record Video ImgKeyFace: "<<imgKeyFace <<" ImgKeyYolo :"<<imgKeyYolo <<"   Message: "<<e.what());
            return ;
        }
    }
    else {
        INFO("ImageNoFace Yolo:"<<imgKeyYolo<<"   Face:"<<imgKeyFace);
        INFO("faceRpcElement: "<< faceRpcElement.getTriggerState() <<" "<<
                               "personElement: "<<personElement.getTriggerState() <<"  "<<
                               "leftJudgment: "<<leftJudgment.getTriggerState() <<"   "<<
                               "leftJudgment: "<<rightJudgment.getTriggerState() <<"    "<<
                               "perimeterElement: "<<perimeterElement.getTriggerState()<<"  "<<
                               "crowdElement: "<<crowdElement.getTriggerState()<<"   "<<
                               "perHubElement: "<<perHubElement.getTriggerState()<<"   "<<
                               "perStaticElement: "<<perStaticElement.getTriggerState());
    }*/
}
void AppPipeController::init() {
    unsigned char ip_old[15] = {0};
@@ -203,27 +256,29 @@
    //  int max=appPref.getIntData("n_cut_max_duration");
    // recordInit(40,100);
    videoCaptureElement.registerConnector([&] {
        cv::Mat imageTemp;
        std::string imgKey;
        m_hiredisTool.listRpop(m_camId,imgKey);
        if(imgKey.empty())
        {
            //DBG("imgKey.empty()");
            ERR("CamId  "<<m_camId<<" No ImgKey");
            return;
        }
        cv::Mat imageTemp;
        m_hiredisTool.getKeyImage(imgKey,imageTemp);
        if(!m_bSetWH)
        {
            INFO("SetWidth:"<<imageTemp.cols<<"  Height:"<<imageTemp.rows);
            appPref.setIntData(m_camId+"width",imageTemp.cols);
            appPref.setIntData(m_camId+"height",imageTemp.rows);
            m_bSetWH=true;
        }
        m_hiredisTool.getKeyImage(imgKey,imageTemp);
        m_hiredisTool.delKey(imgKey);
        if(imageTemp.empty())
        {
            ERR("No Image Data In: "<<imgKey);
            ERR("No Image Data In: "<<m_camId<<"   ImgKey:"<<imgKey);
            return;
        }
        std::string  strNewTime = AppUtil::getTimeUSecString();
@@ -254,8 +309,8 @@
                imageDrawElement.setImage(imageTemp);
                imageDrawElement.submit();
            }
            if(faceRpcElement.getTriggerState() ||
            //this->RecordVideo();
            /*if(faceRpcElement.getTriggerState() ||
                 personElement.getTriggerState() ||
                 leftJudgment.getTriggerState() ||
                 rightJudgment.getTriggerState() ||
@@ -289,7 +344,7 @@
                    "crowdElement: "<<crowdElement.getTriggerState()<<"   "<<
                    "perHubElement: "<<perHubElement.getTriggerState()<<"   "<<
                    "perStaticElement: "<<perStaticElement.getTriggerState());
            }
            }*/
        }
    });
@@ -300,14 +355,20 @@
            personElement.setObjsResults(yoloRpcElement.getLastScoreRects());
            personElement.submit();
        }
        //INFO("Record Video By Yolo");
        //this->RecordVideo();
    });
    faceRpcElement.registerConnector([&] {
        imageDrawElement.setFaces(faceRpcElement.getLastScoreRects());
        //INFO("Record Video By Face");
        //this->RecordVideo();
    });
    yoloRpcElement.registerConnector("YoloTrigger", [&] {
//        auto images = yoloRpcElement.getTriggerMats();
        //INFO("Record Video By Yolo");
        //this->RecordVideo();
    });
    faceRpcElement.registerConnector("FaceTrigger", [&] {
@@ -318,6 +379,8 @@
                                              faceRpcElement.getTriggerFaces(),
                                              faceRpcElement.getTriggerScoreRects(),
                                              faceRpcElement.getTriggerMats()});
        //INFO("Record Video By Face");
        //this->RecordVideo();
    });
    imageDrawElement.registerConnector([&] {
@@ -347,7 +410,7 @@
    }
   // registerElement(newRecordVideoElement);
    videoCaptureElement.setOutPutInterval(3);
    //videoCaptureElement.setOutPutInterval(3);
    faceExtractElement.setProperty("index", to_string(m_index));
    registerElement(yoloRpcElement);
    //#todo setProperty