From 139dff28a5fe110d848b77fbbfe041ed9af42aa4 Mon Sep 17 00:00:00 2001
From: chenshijun <csj_sky@126.com>
Date: 星期二, 16 四月 2019 21:53:54 +0800
Subject: [PATCH] 修改查找视频
---
QiaoJiaSystem/StructureApp/AppPipeController.cpp | 155 +++++++++++++++++++++++++++++++++++----------------
1 files changed, 105 insertions(+), 50 deletions(-)
diff --git a/QiaoJiaSystem/StructureApp/AppPipeController.cpp b/QiaoJiaSystem/StructureApp/AppPipeController.cpp
index 6e0ac75..aa0cbf5 100644
--- a/QiaoJiaSystem/StructureApp/AppPipeController.cpp
+++ b/QiaoJiaSystem/StructureApp/AppPipeController.cpp
@@ -9,7 +9,7 @@
#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),
+// videoCaptureElement("filePath", 25, -1, appPref.getIntData("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),
@@ -19,7 +19,8 @@
//}
AppPipeController::AppPipeController(std::string folderPath, const SdkRuleMap &ruleMap) :
- videoCaptureElement("filePath", 25, -1, appPref.getLongData("gpu.index")),
+ m_rpcClient("RtspAnalysServer", "127.0.0.1",appPref.getIntData("RpcVTIMPort"),"tcp"),
+ videoCaptureElement("filePath", 25, -1, appPref.getIntData("gpu.index")),
// videoCaptureElement(40),
m_index(0),
m_folderPath(folderPath),
@@ -29,16 +30,16 @@
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();
}
//AppPipeController::AppPipeController(int index, const Json::Value &json, bool RecordVideoEnable) :
-// videoCaptureElement(json["rtsp"].asString(), 25, 3000, appPref.getLongData("gpu.index"), RecordVideoEnable),
+// videoCaptureElement(json["rtsp"].asString(), 25, 3000, appPref.getIntData("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) {
@@ -47,7 +48,7 @@
//AppPipeController::AppPipeController(std::string camId, const Json::Value &json, bool RecordVideoEnable) :
-// videoCaptureElement(json["rtsp"].asString(), 25, 3000, appPref.getLongData("gpu.index")),
+// videoCaptureElement(json["rtsp"].asString(), 25, 3000, appPref.getIntData("gpu.index")),
// m_index(0),
// m_camId(camId),
// fdfsClient(nullptr),
@@ -68,7 +69,8 @@
// intKeepRight();
//}
AppPipeController::AppPipeController(std::string camId, const SdkRuleMap &ruleMap, bool RecordVideoEnable) :
- videoCaptureElement(appPref.getStringData(camId + "rtsp"), 25, 3000, appPref.getLongData("gpu.index")),
+ m_rpcClient("RtspAnalysServer", "127.0.0.1",appPref.getIntData("RpcVTIMPort"),"tcp"),
+ videoCaptureElement(appPref.getStringData(camId + "rtsp"), 25, 3000, appPref.getIntData("gpu.index")),
// videoCaptureElement(40),
m_index(0),
m_camId(camId),
@@ -77,20 +79,17 @@
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]),
perHubElement(ruleMap[PerHubSdk]),
leftJudgment(ruleMap[KeepRightSdk]),
rightJudgment(ruleMap[KeepRightSdk]),
- bRecordVideoEnable(RecordVideoEnable),
+// bRecordVideoEnable(RecordVideoEnable),
m_sdkRuleMap(ruleMap),
- rpcClient("RtspAnalysServer", "127.0.0.1",10009,"tcp"),
- m_bSetWH(false)
-
- {
+ m_bSetWH(false) {
DBG("camId" << camId);
init();
initPerimeter();
@@ -176,6 +175,58 @@
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,30 +254,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()");
+ m_hiredisTool.listRpop(m_camId, imgKey);
+ if (imgKey.empty()) {
+// ERR("CamId "<<m_camId<<" No ImgKey");
return;
}
-
- if(!m_bSetWH)
- {
- appPref.setIntData(m_camId+"width",imageTemp.cols);
- appPref.setIntData(m_camId+"height",imageTemp.rows);
- m_bSetWH=true;
+ 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);
+ if (imageTemp.empty()) {
+ ERR("No Image Data In: " << m_camId << " ImgKey:" << imgKey);
return;
}
- std::string strNewTime = AppUtil::getTimeUSecString();
+ std::string strNewTime = AppUtil::getTimeUSecString();
ImageName_s_t imgSt = ImageName_s_t::fromString(imgKey);
@@ -234,8 +284,8 @@
if (!faceRpcElement.isBusy()) {
//#todo
faceRpcElement.setProperty("time", strNewTime);
- faceRpcElement.setProperty("imgKey",imgKey);
- INFO("Write To FaceRPC ES time:"<<strNewTime<< " ImgKey: "<<imgKey);
+ faceRpcElement.setProperty("imgKey", imgKey);
+// INFO("Write To FaceRPC ES time:" << strNewTime << " ImgKey: " << imgKey);
faceRpcElement.setImage(imageTemp);
faceRpcElement.submit();
}
@@ -243,8 +293,8 @@
if (!yoloRpcElement.isBusy()) {
//#todo
yoloRpcElement.setProperty("time", strNewTime);
- yoloRpcElement.setProperty("imgKey",imgKey);
- INFO("Write To YoloES time:"<<strNewTime<< " ImgKey: "<<imgKey);
+ yoloRpcElement.setProperty("imgKey", imgKey);
+// INFO("Write To YoloES time:" << strNewTime << " ImgKey: " << imgKey);
yoloRpcElement.setImage(imageTemp);
yoloRpcElement.submit();
}
@@ -254,8 +304,8 @@
imageDrawElement.setImage(imageTemp);
imageDrawElement.submit();
}
-
- if(faceRpcElement.getTriggerState() ||
+ //this->RecordVideo();
+ /*if(faceRpcElement.getTriggerState() ||
personElement.getTriggerState() ||
leftJudgment.getTriggerState() ||
rightJudgment.getTriggerState() ||
@@ -289,7 +339,7 @@
"crowdElement: "<<crowdElement.getTriggerState()<<" "<<
"perHubElement: "<<perHubElement.getTriggerState()<<" "<<
"perStaticElement: "<<perStaticElement.getTriggerState());
- }
+ }*/
}
});
@@ -300,14 +350,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,11 +374,13 @@
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());
}
});
@@ -335,8 +393,7 @@
registerElement(faceRpcElement);
registerElement(faceExtractElement);
}
- if(appPref.getIntData("show.image") == 1)
- {
+ if (appPref.getIntData("show.image") == 1) {
imageDrawElement.registerConnector([&] {
ImageShowElement::showImage(to_string(this->m_index), *imageDrawElement.getImage());
@@ -346,8 +403,8 @@
registerElement(imageDrawElement);
}
- // registerElement(newRecordVideoElement);
- videoCaptureElement.setOutPutInterval(3);
+ // registerElement(newRecordVideoElement);
+ //videoCaptureElement.setOutPutInterval(3);
faceExtractElement.setProperty("index", to_string(m_index));
registerElement(yoloRpcElement);
//#todo setProperty
@@ -480,14 +537,12 @@
leftJudgment.init(rule.strAreas, rule.strLine);
rightJudgment.init(rule.strExAreas, rule.strExLine);
yoloRpcElement.registerConnector([&] {
- if(!leftJudgment.isBusy())
- {
- leftJudgment.setYoloObjects(yoloRpcElement.getLastScoreRects());
- leftJudgment.setImage(yoloRpcElement.getImage());
- leftJudgment.submit();
+ if (!leftJudgment.isBusy()) {
+ leftJudgment.setYoloObjects(yoloRpcElement.getLastScoreRects());
+ leftJudgment.setImage(yoloRpcElement.getImage());
+ leftJudgment.submit();
}
- if(!rightJudgment.isBusy())
- {
+ if (!rightJudgment.isBusy()) {
rightJudgment.setYoloObjects(yoloRpcElement.getLastScoreRects());
rightJudgment.setImage(yoloRpcElement.getImage());
--
Gitblit v1.8.0