From 8bfd4cc90f25f1800eb5e61d50d4fa74854e0f2a Mon Sep 17 00:00:00 2001
From: pansen <pansen626@sina.com>
Date: 星期一, 28 一月 2019 16:41:30 +0800
Subject: [PATCH] 布控上传修改
---
QiaoJiaSystem/StructureApp/AppPipeController.cpp | 291 ++++++++++++++++++++++++++++++++++++----------------------
1 files changed, 181 insertions(+), 110 deletions(-)
diff --git a/QiaoJiaSystem/StructureApp/AppPipeController.cpp b/QiaoJiaSystem/StructureApp/AppPipeController.cpp
index afb6584..8bf95e3 100644
--- a/QiaoJiaSystem/StructureApp/AppPipeController.cpp
+++ b/QiaoJiaSystem/StructureApp/AppPipeController.cpp
@@ -7,49 +7,87 @@
#include <QtCore/QtGlobal>
#include <net_config.h>
-AppPipeController::AppPipeController(std::string folderPath, const Json::Value &json) :
+//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) :
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) {
+ 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) {
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) :
+ videoCaptureElement(appPref.getStringData(camId + "rtsp"), 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"),
- // 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()),
+ recordVideoElement(camId, appPref.getStringData(camId + "rtsp")),
newRecordVideoElement(camId),
- perimeterElement(1),
- crowdElement(json["crowd.num"].asInt()),
- bRecordVideoEnable(RecordVideoEnable) {
+ perimeterElement(ruleMap[PerimeterSdk]),
+ crowdElement(ruleMap[CrowdSdk]),
+ perStaticElement(ruleMap[PerStaticSdk]),
+ perHubElement(ruleMap[PerHubSdk]),
+ leftJudgment(ruleMap[KeepRightSdk]),
+ rightJudgment(ruleMap[KeepRightSdk]),
+ bRecordVideoEnable(RecordVideoEnable),
+ m_sdkRuleMap(ruleMap) {
+ DBG("camId" << camId);
init();
initPerimeter();
initCrowd();
- intKeepRight();
+ initKeepRight();
+ initPerHub();
+ initPerStatic();
}
AppPipeController::~AppPipeController() {
@@ -91,9 +129,9 @@
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);
@@ -134,20 +172,19 @@
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);
}
@@ -155,28 +192,28 @@
// int max=appPref.getIntData("n_cut_max_duration");
// recordInit(40,100);
videoCaptureElement.registerConnector([&] {
-
+ mutex.lock();
cv::Mat imageTemp = videoCaptureElement.getImage();
- std::string strNewTime;
- strNewTime = AppUtil::getTimeUSecString();
+ std::string strNewTime = AppUtil::getTimeUSecString();;
-// cv::putText(imageTemp, strNewTime, cv::Point(408, 540), cv::HersheyFonts::FONT_HERSHEY_PLAIN, 5,
-// cv::Scalar(255, 255, 0), 2);
+ //DBG("m_camId="<<m_camId<<" strNewTime="<<strNewTime);
+ 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) {
if (bRecordVideoEnable) {
newRecordVideoElement.pushImgBuf(strNewTime, imageTemp);
newRecordVideoElement.setSdkTrigger(faceRpcElement.getTriggerState() ||//TODO
- yoloRpcElement.getTrigger() ||
+ personElement.getTriggerState() ||
leftJudgment.getTriggerState() ||
rightJudgment.getTriggerState() ||
perimeterElement.getTriggerState() ||
- crowdElement.getTriggerState());
- if (!newRecordVideoElement.isBusy()) {
- newRecordVideoElement.submit();
- }
+ crowdElement.getTriggerState() ||
+ perHubElement.getTriggerState() ||
+ perStaticElement.getTriggerState()
+ );
}
@@ -192,6 +229,7 @@
strNewTime = newDt.toString("yyyy-MM-dd hh:mm:ss").toStdString();
}
+ mutex.unlock();
// DBG(strNewTime);
if (!faceRpcElement.isBusy()) {
@@ -216,14 +254,19 @@
imageDrawElement.submit();
}
- if (bRecordVideoEnable) {
- registerElement(triggerElement);
- }
+// if (bRecordVideoEnable) {
+// registerElement(triggerElement);
+// }
});
yoloRpcElement.registerConnector([&] {
- imageDrawElement.setYoloObjects(yoloRpcElement.getLastScoreRects());
+ imageDrawElement.setYoloObjects(personElement.getLastScoreRects());
+ if (!personElement.isBusy()) {
+
+ personElement.setObjsResults(yoloRpcElement.getLastScoreRects());
+ personElement.submit();
+ }
});
faceRpcElement.registerConnector([&] {
@@ -249,31 +292,21 @@
ImageShowElement::showImage(to_string(this->m_index), *imageDrawElement.getImage());
}
});
- newRecordVideoElement.registerConnector([&] {
- if (faceRpcElement.getTriggerState() ||//TODO
- yoloRpcElement.getTrigger() ||
- leftJudgment.getTriggerState() ||
- rightJudgment.getTriggerState() ||
- perimeterElement.getTriggerState() ||
- crowdElement.getTriggerState()
- ) {
-
- }
-
- });
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(5);
+ // 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));
@@ -318,7 +351,14 @@
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() {
@@ -330,18 +370,17 @@
}
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();
}
});
@@ -367,61 +406,93 @@
}
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);
+}
--
Gitblit v1.8.0