| | |
| | | #include <QtCore/QtGlobal> |
| | | #include <net_config.h> |
| | | |
| | | AppPipeController::AppPipeController(std::string folderPath, const Json::Value &json) : |
| | | videoCaptureElement("filePath", 25, -1, appPref.getLongData("gpu.index")), m_index(0), |
| | | #include <basic/pipe_element/ffmpeg/basic_struct_for_video_image.h> |
| | | //AppPipeController::AppPipeController(std::string folderPath, const Json::Value &json) : |
| | | // videoCaptureElement("filePath", 25, -1, appPref.getLongData("gpu.index")), m_index(0), |
| | | // m_folderPath(folderPath), |
| | | // m_json(json), fdfsClient(nullptr), yoloRpcElement(folderPath + "yoloRpc"), faceRpcElement(folderPath + "faceRpc"), |
| | | // faceExtractElement(folderPath + "faceExtract"), triggerElement(25, 10), |
| | | // recordVideoElement(-1, json["rtsp"].asString()), bRecordVideoEnable(false) { |
| | | |
| | | // init(); |
| | | |
| | | //} |
| | | 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), |
| | | m_folderPath(folderPath), |
| | | m_json(json), fdfsClient(nullptr), yoloRpcElement(folderPath + "yoloRpc"), faceRpcElement(folderPath + "faceRpc"), |
| | | faceExtractElement(folderPath + "faceExtract"), triggerElement(25, 10), |
| | | recordVideoElement(-1, json["rtsp"].asString()), bRecordVideoEnable(false) { |
| | | m_sdkRuleMap(ruleMap), |
| | | fdfsClient(nullptr), |
| | | yoloRpcElement(folderPath + "yoloRpc"), |
| | | faceRpcElement(folderPath + "faceRpc", ruleMap[FaceSdk]), |
| | | faceExtractElement(folderPath + "faceExtract", ruleMap[FaceSdk]), |
| | | triggerElement(25, 10), |
| | | // recordVideoElement(-1, ""), |
| | | bRecordVideoEnable(false), |
| | | |
| | | m_bSetWH(false) |
| | | { |
| | | |
| | | init(); |
| | | |
| | | } |
| | | |
| | | AppPipeController::AppPipeController(int index, const Json::Value &json, bool RecordVideoEnable) : |
| | | videoCaptureElement(json["rtsp"].asString(), 25, 3000, appPref.getLongData("gpu.index"), RecordVideoEnable), |
| | | m_index(index), fdfsClient(nullptr), yoloRpcElement(to_string(index) + "yoloRpc"), |
| | | faceRpcElement(to_string(index) + "faceRpc"), m_json(json), faceExtractElement(to_string(index) + "faceExtract"), |
| | | triggerElement(25, 4), recordVideoElement(index, json["rtsp"].asString()), bRecordVideoEnable(RecordVideoEnable) { |
| | | init(); |
| | | } |
| | | //AppPipeController::AppPipeController(int index, const Json::Value &json, bool RecordVideoEnable) : |
| | | // videoCaptureElement(json["rtsp"].asString(), 25, 3000, appPref.getLongData("gpu.index"), RecordVideoEnable), |
| | | // m_index(index), fdfsClient(nullptr), yoloRpcElement(to_string(index) + "yoloRpc"), |
| | | // faceRpcElement(to_string(index) + "faceRpc"), m_json(json), faceExtractElement(to_string(index) + "faceExtract"), |
| | | // triggerElement(25, 4), recordVideoElement(index, json["rtsp"].asString()), bRecordVideoEnable(RecordVideoEnable) { |
| | | // init(); |
| | | //} |
| | | |
| | | |
| | | AppPipeController::AppPipeController(std::string camId, const Json::Value &json, bool RecordVideoEnable) : |
| | | videoCaptureElement(json["rtsp"].asString(), 25, 3000, appPref.getLongData("gpu.index")), |
| | | //AppPipeController::AppPipeController(std::string camId, const Json::Value &json, bool RecordVideoEnable) : |
| | | // videoCaptureElement(json["rtsp"].asString(), 25, 3000, appPref.getLongData("gpu.index")), |
| | | // m_index(0), |
| | | // m_camId(camId), |
| | | // fdfsClient(nullptr), |
| | | // yoloRpcElement(camId + "yoloRpc"), |
| | | // faceRpcElement(camId + "faceRpc"), |
| | | // m_json(json), |
| | | // faceExtractElement(camId + "faceExtract"), |
| | | // triggerElement(25, 4), |
| | | // recordVideoElement(camId, json["rtsp"].asString()), |
| | | // newRecordVideoElement(camId), |
| | | // perimeterElement(1), |
| | | // crowdElement(json["crowd.num"].asInt()), |
| | | // bRecordVideoEnable(RecordVideoEnable) |
| | | //{ |
| | | // init(); |
| | | // initPerimeter(); |
| | | // initCrowd(); |
| | | // 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), |
| | | m_camId(camId), |
| | | fdfsClient(nullptr), |
| | | yoloRpcElement(camId + "yoloRpc"), |
| | | faceRpcElement(camId + "faceRpc"), |
| | | m_json(json), |
| | | faceExtractElement(camId + "faceExtract"), |
| | | // 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()), |
| | | faceRpcElement(camId + "faceRpc", ruleMap[FaceSdk]), |
| | | faceExtractElement(camId + "faceExtract", ruleMap[FaceSdk]), |
| | | triggerElement(25, 4), |
| | | recordVideoElement(camId, json["rtsp"].asString()), |
| | | newRecordVideoElement(camId), |
| | | perimeterElement(1), |
| | | crowdElement(json["crowd.num"].asInt()), |
| | | bRecordVideoEnable(RecordVideoEnable) { |
| | | // recordVideoElement(camId, appPref.getStringData(camId + "rtsp")), |
| | | // newRecordVideoElement(camId), |
| | | perimeterElement(ruleMap[PerimeterSdk]), |
| | | crowdElement(ruleMap[CrowdSdk]), |
| | | perStaticElement(ruleMap[PerStaticSdk]), |
| | | perHubElement(ruleMap[PerHubSdk]), |
| | | leftJudgment(ruleMap[KeepRightSdk]), |
| | | rightJudgment(ruleMap[KeepRightSdk]), |
| | | bRecordVideoEnable(RecordVideoEnable), |
| | | m_sdkRuleMap(ruleMap), |
| | | m_bSetWH(false) |
| | | |
| | | { |
| | | DBG("camId" << camId); |
| | | init(); |
| | | initPerimeter(); |
| | | initCrowd(); |
| | | intKeepRight(); |
| | | initKeepRight(); |
| | | initPerHub(); |
| | | initPerStatic(); |
| | | } |
| | | |
| | | AppPipeController::~AppPipeController() { |
| | |
| | | faceExtractElement.setProperty("dev_id", str_device_id); |
| | | faceExtractElement.setProperty("ch_id", str_ch_id); |
| | | faceExtractElement.setProperty("path", path); |
| | | yoloRpcElement.setProperty("dev_id", str_device_id); |
| | | yoloRpcElement.setProperty("ch_id", str_ch_id); |
| | | yoloRpcElement.setProperty("path", path); |
| | | personElement.setProperty("dev_id", str_device_id); |
| | | personElement.setProperty("ch_id", str_ch_id); |
| | | personElement.setProperty("path", path); |
| | | |
| | | //修改时间为实际发生时间 |
| | | QString strPath = QString::fromStdString(path); |
| | |
| | | } |
| | | |
| | | bool AppPipeController::getRunning() { |
| | | return videoCaptureElement.isRunning(); |
| | | //return videoCaptureElement.isRunning(); |
| | | return false; |
| | | } |
| | | |
| | | 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}; |
| | |
| | | if (!(GetIpAddress(net_ifname.c_str(), ip_old))) { |
| | | ERR("couldn't get ip"); |
| | | } |
| | | |
| | | m_localIp = std::string((char *) ip_old); |
| | | bUp = false; |
| | | |
| | | yoloRpcElement.setProperty("str_addr", m_json["addr"].asString()); |
| | | yoloRpcElement.setProperty("local_ip", std::string((char *) ip_old)); |
| | | personElement.setProperty("str_addr", m_sdkRuleMap[YoloSdk].strAddr.toStdString()); |
| | | personElement.setProperty("local_ip", std::string((char *) ip_old)); |
| | | |
| | | faceExtractElement.setProperty("str_addr", m_json["addr"].asString()); |
| | | faceExtractElement.setProperty("str_addr", m_sdkRuleMap[FaceSdk].strAddr.toStdString()); |
| | | faceExtractElement.setProperty("local_ip", std::string((char *) ip_old)); |
| | | |
| | | |
| | | if (bRecordVideoEnable) { |
| | | faceExtractElement.setProperty("dev_id", m_camId); |
| | | yoloRpcElement.setProperty("dev_id", m_camId); |
| | | m_json_Record["rtsp"] = m_json["rtsp"].asString(); |
| | | personElement.setProperty("dev_id", m_camId); |
| | | } |
| | | |
| | | |
| | |
| | | // recordInit(40,100); |
| | | videoCaptureElement.registerConnector([&] { |
| | | |
| | | cv::Mat imageTemp = videoCaptureElement.getImage(); |
| | | std::string imgKey; |
| | | m_hiredisTool.listRpop(m_camId,imgKey); |
| | | if(imgKey.empty()) |
| | | { |
| | | ERR("CamId "<<m_camId<<" No ImgKey"); |
| | | return; |
| | | } |
| | | |
| | | std::string strNewTime; |
| | | strNewTime = AppUtil::getTimeUSecString(); |
| | | 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; |
| | | } |
| | | |
| | | cv::putText(imageTemp, strNewTime, cv::Point(408, 540), cv::HersheyFonts::FONT_HERSHEY_PLAIN, 5, |
| | | cv::Scalar(255, 255, 0), 2); |
| | | m_hiredisTool.delKey(imgKey); |
| | | if(imageTemp.empty()) |
| | | { |
| | | ERR("No Image Data In: "<<m_camId<<" ImgKey:"<<imgKey); |
| | | return; |
| | | } |
| | | std::string strNewTime = AppUtil::getTimeUSecString(); |
| | | |
| | | ImageName_s_t imgSt = ImageName_s_t::fromString(imgKey); |
| | | |
| | | if (m_camId.size() > 0) { |
| | | |
| | | |
| | | 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(); |
| | | |
| | | if (!faceRpcElement.isBusy()) { |
| | | //#todo |
| | | faceRpcElement.setProperty("time", strNewTime); |
| | | faceRpcElement.setProperty("imgKey",imgKey); |
| | | INFO("Write To FaceRPC ES time:"<<strNewTime<< " ImgKey: "<<imgKey); |
| | | faceRpcElement.setImage(imageTemp); |
| | | faceRpcElement.submit(); |
| | | } |
| | | |
| | | } else { |
| | | //#todo 计算当前文件时间 |
| | | //#TODO 输出间隔用于计算时间 |
| | | // 现为每三帧计算一次,导致计算的时间长于文件的实际时间 |
| | | auto opit = 25;// videoCaptureElement.getOutPutInterval(); |
| | | auto opidx = videoCaptureElement.getoutPutIndex(); |
| | | int second = opidx / opit; |
| | | qint64 newTime = m_dt.toMSecsSinceEpoch() + second * 1000; |
| | | QDateTime newDt = QDateTime::fromMSecsSinceEpoch(newTime); |
| | | strNewTime = newDt.toString("yyyy-MM-dd hh:mm:ss").toStdString(); |
| | | if (!yoloRpcElement.isBusy()) { |
| | | //#todo |
| | | yoloRpcElement.setProperty("time", strNewTime); |
| | | yoloRpcElement.setProperty("imgKey",imgKey); |
| | | INFO("Write To YoloES time:"<<strNewTime<< " ImgKey: "<<imgKey); |
| | | yoloRpcElement.setImage(imageTemp); |
| | | yoloRpcElement.submit(); |
| | | } |
| | | |
| | | } |
| | | // DBG(strNewTime); |
| | | |
| | | if (!faceRpcElement.isBusy()) { |
| | | // faceRpcElement.setProperty("uuid", uuid); |
| | | //#todo |
| | | faceRpcElement.setProperty("time", strNewTime); |
| | | // faceRpcElement.setProperty("time", uuid); |
| | | faceRpcElement.setImage(imageTemp); |
| | | faceRpcElement.submit(); |
| | | } |
| | | |
| | | if (!yoloRpcElement.isBusy()) { |
| | | // yoloRpcElement.setProperty("uuid", uuid); |
| | | //#todo |
| | | yoloRpcElement.setProperty("time", strNewTime); |
| | | yoloRpcElement.setImage(imageTemp); |
| | | yoloRpcElement.submit(); |
| | | } |
| | | |
| | | if (!imageDrawElement.isBusy()) { |
| | | imageDrawElement.setImage(imageTemp); |
| | | imageDrawElement.submit(); |
| | | } |
| | | |
| | | if (bRecordVideoEnable) { |
| | | registerElement(triggerElement); |
| | | if (appPref.getIntData("show.image") == 1 && !imageDrawElement.isBusy()) { |
| | | imageDrawElement.setImage(imageTemp); |
| | | imageDrawElement.submit(); |
| | | } |
| | | //this->RecordVideo(); |
| | | /*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; |
| | | } |
| | | INFO("Record Video "<<imgKey); |
| | | server->recordVideo(imgKey); |
| | | } |
| | | catch (std::exception &e) |
| | | { |
| | | ERR("Record Video Err: "<<imgKey <<" Message: "<<e.what()); |
| | | return ; |
| | | } |
| | | } |
| | | else { |
| | | 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()); |
| | | }*/ |
| | | } |
| | | }); |
| | | |
| | | |
| | | yoloRpcElement.registerConnector([&] { |
| | | imageDrawElement.setYoloObjects(yoloRpcElement.getLastScoreRects()); |
| | | imageDrawElement.setYoloObjects(personElement.getLastScoreRects()); |
| | | if (!personElement.isBusy()) { |
| | | 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", [&] { |
| | |
| | | faceRpcElement.getTriggerFaces(), |
| | | faceRpcElement.getTriggerScoreRects(), |
| | | faceRpcElement.getTriggerMats()}); |
| | | //INFO("Record Video By Face"); |
| | | //this->RecordVideo(); |
| | | }); |
| | | |
| | | imageDrawElement.registerConnector([&] { |
| | | if (appPref.getIntData("show.image") == 1) { |
| | | ImageShowElement::showImage(to_string(this->m_index), *imageDrawElement.getImage()); |
| | | ImageShowElement::showImage(to_string(this->m_index), *imageDrawElement.getImage()); |
| | | } |
| | | }); |
| | | |
| | | registerElement(videoCaptureElement); |
| | | if (m_json["yolo.enable"].asString() == "1") { |
| | | registerElement(yoloRpcElement); |
| | | if (m_sdkRuleMap[YoloSdk].nIsRun == 1) { |
| | | registerElement(personElement); |
| | | } |
| | | if (m_json["face.enable"].asString() == "1") { |
| | | if (m_sdkRuleMap[FaceSdk].nIsRun == 1) { |
| | | DBG("FaceSdk=" << m_sdkRuleMap[FaceSdk].nIsRun); |
| | | registerElement(faceRpcElement); |
| | | registerElement(faceExtractElement); |
| | | } |
| | | registerElement(imageDrawElement); |
| | | registerElement(newRecordVideoElement); |
| | | videoCaptureElement.setOutPutInterval(3); |
| | | if(appPref.getIntData("show.image") == 1) |
| | | { |
| | | imageDrawElement.registerConnector([&] { |
| | | |
| | | ImageShowElement::showImage(to_string(this->m_index), *imageDrawElement.getImage()); |
| | | |
| | | }); |
| | | |
| | | registerElement(imageDrawElement); |
| | | } |
| | | |
| | | // registerElement(newRecordVideoElement); |
| | | //videoCaptureElement.setOutPutInterval(3); |
| | | faceExtractElement.setProperty("index", to_string(m_index)); |
| | | registerElement(yoloRpcElement); |
| | | //#todo setProperty |
| | | // faceExtractElement.setProperty("index", to_string(m_index)); |
| | | // faceExtractElement.setProperty("index", to_string(m_index)); |
| | |
| | | void AppPipeController::setfdfsClient(FastFdsWithLock *p_fdfsClient) { |
| | | fdfsClient = p_fdfsClient; |
| | | faceExtractElement.setFdfs(fdfsClient); |
| | | yoloRpcElement.setFdfs(fdfsClient); |
| | | personElement.setFdfs(fdfsClient); |
| | | perHubElement.setFdfs(fdfsClient); |
| | | perimeterElement.setFdfs(fdfsClient); |
| | | perStaticElement.setFdfs(fdfsClient); |
| | | leftJudgment.setFdfs(fdfsClient); |
| | | rightJudgment.setFdfs(fdfsClient); |
| | | crowdElement.setFdfs(fdfsClient); |
| | | |
| | | } |
| | | |
| | | std::string AppPipeController::getRtmp() { |
| | |
| | | } |
| | | |
| | | void AppPipeController::initPerimeter() { |
| | | if (!m_json["perimeter.enable"] == "1") { |
| | | SdkRule rule = m_sdkRuleMap[PerimeterSdk]; |
| | | if (rule.nIsRun != 1) { |
| | | return; |
| | | } |
| | | std::string area = m_json["perimeter.area"].asString(); |
| | | //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"); |
| | | |
| | | |
| | | yoloRpcElement.registerConnector([&] { |
| | | if (!perimeterElement.isBusy()) { |
| | | perimeterElement.setYoloObjects(yoloRpcElement.getLastScoreRects()); |
| | | perimeterElement.setImage(yoloRpcElement.getImage()); |
| | | |
| | | perimeterElement.setObjsResults(yoloRpcElement.getObjects()); |
| | | perimeterElement.submit(); |
| | | } |
| | | }); |
| | |
| | | } |
| | | |
| | | void AppPipeController::initCrowd() { |
| | | if (m_json["crowd.enable"] != "1") { |
| | | SdkRule rule = m_sdkRuleMap[CrowdSdk]; |
| | | if (rule.nIsRun != 1) { |
| | | return; |
| | | } |
| | | std::string area = m_json["crowd.area"].asString(); |
| | | // std::string area = m_json["crowd.area"].asString(); |
| | | //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("local_ip", m_localIp); |
| | | |
| | | yoloRpcElement.registerConnector([&] { |
| | | if (!crowdElement.isBusy()) { |
| | | crowdElement.setObjsResults(yoloRpcElement.getObjects()); |
| | | crowdElement.setYoloObjects(yoloRpcElement.getLastScoreRects()); |
| | | crowdElement.setImage(yoloRpcElement.getImage()); |
| | | crowdElement.submit(); |
| | | } |
| | | }); |
| | | // crowdElement.registerConnector([&] { |
| | | // crowdTriggerElement.setState(crowdElement.getRealNum() >= m_json["crowd.num"].asInt()); |
| | | // crowdTriggerElement.triggerOnce(); |
| | | // }); |
| | | // crowdTriggerElement.registerConnector([&] { |
| | | |
| | | // switch (crowdTriggerElement.getTriggerType()) { |
| | | // case UP: |
| | | // //reqRecordMap[SdkType_Perimeter]=true; |
| | | // // startRecord(SdkType_Perimeter); |
| | | // DBG("crowdTriggerElement UP"); |
| | | // break; |
| | | // case DOWN: |
| | | // // reqRecordMap[SdkType_Perimeter]=false; |
| | | // //endRecord(SdkType_Perimeter); |
| | | // DBG("crowdTriggerElement Down"); |
| | | // break; |
| | | // default: |
| | | // break; |
| | | // } |
| | | // }); |
| | | registerElement(crowdElement); |
| | | // registerElement(crowdTriggerElement); |
| | | } |
| | | |
| | | void AppPipeController::intKeepRight() { |
| | | if (m_json["keepRight.enable"] != "1") { |
| | | void AppPipeController::initKeepRight() { |
| | | SdkRule rule = m_sdkRuleMap[KeepRightSdk]; |
| | | if (rule.nIsRun != 1) { |
| | | return; |
| | | } |
| | | std::string leftArea = m_json["keepRight.leftArea"].asString(); |
| | | std::string leftLine = m_json["keepRight.leftLine"].asString(); |
| | | std::string rightArea = m_json["keepRight.rightArea"].asString(); |
| | | std::string rightLine = m_json["keepRight.rightLine"].asString(); |
| | | leftJudgment.init(QString::fromStdString(leftArea), QString::fromStdString(leftLine)); |
| | | rightJudgment.init(QString::fromStdString(rightArea), QString::fromStdString(rightLine)); |
| | | leftJudgment.setProperty("local_ip", m_localIp); |
| | | rightJudgment.setProperty("local_ip", m_localIp); |
| | | leftJudgment.init(rule.strAreas, rule.strLine); |
| | | rightJudgment.init(rule.strExAreas, rule.strExLine); |
| | | yoloRpcElement.registerConnector([&] { |
| | | leftJudgment.setYoloObjects(yoloRpcElement.getLastScoreRects()); |
| | | rightJudgment.setYoloObjects(yoloRpcElement.getLastScoreRects()); |
| | | if(!leftJudgment.isBusy()) |
| | | { |
| | | leftJudgment.setYoloObjects(yoloRpcElement.getLastScoreRects()); |
| | | leftJudgment.setImage(yoloRpcElement.getImage()); |
| | | leftJudgment.submit(); |
| | | } |
| | | if(!rightJudgment.isBusy()) |
| | | { |
| | | rightJudgment.setYoloObjects(yoloRpcElement.getLastScoreRects()); |
| | | |
| | | rightJudgment.setImage(yoloRpcElement.getImage()); |
| | | rightJudgment.submit(); |
| | | } |
| | | |
| | | }); |
| | | registerElement(leftJudgment); |
| | | registerElement(rightJudgment); |
| | | |
| | | } |
| | | |
| | | void AppPipeController::initPerStatic() { |
| | | SdkRule rule = m_sdkRuleMap[PerStaticSdk]; |
| | | if (rule.nIsRun != 1) { |
| | | return; |
| | | } |
| | | // std::string area = m_json["crowd.area"].asString(); |
| | | //area="[{\"x\":100,\"y\":6},{\"x\":100,\"y\":1200},{\"x\":1800,\"y\":1200},{\"x\":1800,\"y\":6}]"; |
| | | |
| | | perStaticElement.setProperty("local_ip", m_localIp); |
| | | yoloRpcElement.registerConnector([&] { |
| | | if (!perStaticElement.isBusy()) { |
| | | perStaticElement.setYoloObjects(yoloRpcElement.getLastScoreRects()); |
| | | perStaticElement.setImage(yoloRpcElement.getImage()); |
| | | perStaticElement.submit(); |
| | | } |
| | | }); |
| | | |
| | | registerElement(perStaticElement); |
| | | } |
| | | |
| | | void AppPipeController::initPerHub() { |
| | | SdkRule rule = m_sdkRuleMap[PerHubSdk]; |
| | | if (rule.nIsRun != 1) { |
| | | return; |
| | | } |
| | | // std::string area = m_json["crowd.area"].asString(); |
| | | //area="[{\"x\":100,\"y\":6},{\"x\":100,\"y\":1200},{\"x\":1800,\"y\":1200},{\"x\":1800,\"y\":6}]"; |
| | | |
| | | perHubElement.setProperty("local_ip", m_localIp); |
| | | yoloRpcElement.registerConnector([&] { |
| | | if (!perHubElement.isBusy()) { |
| | | perHubElement.setYoloObjects(yoloRpcElement.getLastScoreRects()); |
| | | perHubElement.setImage(yoloRpcElement.getImage()); |
| | | perHubElement.submit(); |
| | | } |
| | | }); |
| | | |
| | | registerElement(perHubElement); |
| | | } |