派生自 development/c++

pansen
2019-01-10 59408e43480b48b6acd6e76641ff1a97811e7ab5
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;
    }
}