From 1c622cd0d7d95709ab224224af18a22630aede75 Mon Sep 17 00:00:00 2001 From: zhangjixing <775834166@qq.com> Date: 星期一, 28 一月 2019 20:02:04 +0800 Subject: [PATCH] 画框根据概率缩放坐标 --- QiaoJiaSystem/StructureApp/AppPipeController.cpp | 33 ++++++---- QiaoJiaSystem/StructureApp/FaceRpcElement.h | 1 QiaoJiaSystem/StructureApp/JudgmentRetrogradeTool.cpp | 24 ++++++- QiaoJiaSystem/StructureApp/PerimeterElement.cpp | 34 +++++----- QiaoJiaSystem/StructureApp/PerimeterElement.h | 1 QiaoJiaSystem/DataManagerServer/web-server接口.txt | 4 QiaoJiaSystem/StructureApp/PerStaticElement.h | 1 QiaoJiaSystem/StructureApp/FaceRpcElement.cpp | 18 ++++- QiaoJiaSystem/StructureApp/PerStaticElement.cpp | 19 ++++- QiaoJiaSystem/StructureApp/JudgmentRetrogradeTool.h | 7 ++ QiaoJiaSystem/StructureApp/AppPipeController.h | 1 11 files changed, 96 insertions(+), 47 deletions(-) diff --git "a/QiaoJiaSystem/DataManagerServer/web-server\346\216\245\345\217\243.txt" "b/QiaoJiaSystem/DataManagerServer/web-server\346\216\245\345\217\243.txt" index 9988ae6..2fc9ad8 100644 --- "a/QiaoJiaSystem/DataManagerServer/web-server\346\216\245\345\217\243.txt" +++ "b/QiaoJiaSystem/DataManagerServer/web-server\346\216\245\345\217\243.txt" @@ -191,7 +191,7 @@ "str_longitude" : "39.994827", "str_name" : "澶у崕鎽勫儚鏈�2", "str_password" : "123456", - "str_reserved" : "", + "str_reserved" : "group2/M00/02/7F/wKgBnFw1whWAT5DbAALrl1a_A04988.jpg", //瀹炴椂娴佹埅鍥� // "str_sdks" : "1,2", "str_username" : "admin" }, @@ -206,7 +206,7 @@ "str_longitude" : "39.994833", "str_name" : "澶у崕鎽勫儚鏈�3", "str_password" : "123433", - "str_reserved" : "", + "str_reserved" : "group2/M00/02/7F/wKgBnFw1whWAT5DbAALrl1a_A04988.jpg",//瀹炴椂娴佹埅鍥� //"str_sdks" : "1,2,3", "str_username" : "admin" } diff --git a/QiaoJiaSystem/StructureApp/AppPipeController.cpp b/QiaoJiaSystem/StructureApp/AppPipeController.cpp index c8e3733..e323265 100644 --- a/QiaoJiaSystem/StructureApp/AppPipeController.cpp +++ b/QiaoJiaSystem/StructureApp/AppPipeController.cpp @@ -80,7 +80,9 @@ leftJudgment(ruleMap[KeepRightSdk]), rightJudgment(ruleMap[KeepRightSdk]), bRecordVideoEnable(RecordVideoEnable), - m_sdkRuleMap(ruleMap) { + m_sdkRuleMap(ruleMap), + m_bSetWH(false) +{ DBG("camId" << camId); init(); initPerimeter(); @@ -192,12 +194,17 @@ // int max=appPref.getIntData("n_cut_max_duration"); // recordInit(40,100); videoCaptureElement.registerConnector([&] { -// mutex.lock(); -// std::string tmp="camId="+m_camId+"videoCaptureElement"; -// ClockTimer cl(tmp); cv::Mat imageTemp = videoCaptureElement.getImage(); + + if(!m_bSetWH) + { + appPref.setIntData(m_camId+"width",imageTemp.cols); + appPref.setIntData(m_camId+"height",imageTemp.rows); + m_bSetWH=true; + } + std::string strNewTime = AppUtil::getTimeUSecString();; //DBG("m_camId="<<m_camId<<" strNewTime="<<strNewTime); @@ -233,7 +240,7 @@ strNewTime = newDt.toString("yyyy-MM-dd hh:mm:ss").toStdString(); } -// mutex.unlock(); + // DBG(strNewTime); // std::string tmp1="camId="+m_camId+"strNewTime"+strNewTime; // ClockTimer cl1(tmp1); @@ -254,10 +261,10 @@ yoloRpcElement.submit(); } - if (!imageDrawElement.isBusy()) { - imageDrawElement.setImage(imageTemp); - imageDrawElement.submit(); - } +// if (!imageDrawElement.isBusy()) { +// imageDrawElement.setImage(imageTemp); +// imageDrawElement.submit(); +// } // if (bRecordVideoEnable) { // registerElement(triggerElement); @@ -266,7 +273,7 @@ yoloRpcElement.registerConnector([&] { - imageDrawElement.setYoloObjects(personElement.getLastScoreRects()); +// imageDrawElement.setYoloObjects(personElement.getLastScoreRects()); if (!personElement.isBusy()) { personElement.setObjsResults(yoloRpcElement.getLastScoreRects()); @@ -275,7 +282,7 @@ }); faceRpcElement.registerConnector([&] { - imageDrawElement.setFaces(faceRpcElement.getLastScoreRects()); +// imageDrawElement.setFaces(faceRpcElement.getLastScoreRects()); }); yoloRpcElement.registerConnector("YoloTrigger", [&] { @@ -294,7 +301,7 @@ 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()); } }); @@ -307,7 +314,7 @@ registerElement(faceRpcElement); registerElement(faceExtractElement); } - registerElement(imageDrawElement); +// registerElement(imageDrawElement); // registerElement(newRecordVideoElement); videoCaptureElement.setOutPutInterval(3); faceExtractElement.setProperty("index", to_string(m_index)); diff --git a/QiaoJiaSystem/StructureApp/AppPipeController.h b/QiaoJiaSystem/StructureApp/AppPipeController.h index 9e031af..b7effa4 100644 --- a/QiaoJiaSystem/StructureApp/AppPipeController.h +++ b/QiaoJiaSystem/StructureApp/AppPipeController.h @@ -110,6 +110,7 @@ std::string m_localIp; std::string getFullFileName(); std::mutex mutex; + bool m_bSetWH; }; #endif // APPPIPECONTROLLER_H diff --git a/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp b/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp index 3a4c807..ce9272c 100644 --- a/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp +++ b/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp @@ -39,7 +39,8 @@ sharedMemory(nullptr), trackingTrigger(nullptr), m_sdkRule(rule), - m_bIsMask(true) + m_bIsMask(true), + m_bSetWH(false) { sharedMemory = new QSharedMemory(QString(shareMemoryName.c_str())); if (!sharedMemory->create(4608 * 2592 * 4)) { @@ -68,7 +69,7 @@ t_score = t_score / 100; trackingTrigger = new TrackingTrigger(t_score); - setMask(m_sdkRule.strAreas.toStdString()); +// setMask(m_sdkRule.strAreas.toStdString()); } FaceRpcElement::~FaceRpcElement() { @@ -178,6 +179,11 @@ image = cv::Mat(value.rows, value.cols, CV_8UC3, sharedMemory->data()); } value.copyTo(image); + if(!m_bSetWH) + { + setMask(m_sdkRule.strAreas.toStdString()); + m_bSetWH=true; + } } bool FaceRpcElement::getTriggerState() const { @@ -191,13 +197,17 @@ m_bIsMask=false; return;//do not detect } + float sizeW=(float)appPref.getIntData(m_sdkRule.strCamId.toStdString()+"width")/480; + float sizeH=(float)appPref.getIntData(m_sdkRule.strCamId.toStdString()+"height")/270; for(int i = 0;i < arrayAreas.size();++i) { QJsonValue jsonValue = arrayAreas[i]; QJsonObject obj = jsonValue.toObject(); - int x = obj.value("x").toDouble()*4; - int y = obj.value("y").toDouble()*4; + int x = obj.value("x").toDouble() *sizeW ; + int y = obj.value("y").toDouble() *sizeH; mPolygon<<(QPoint(x,y)); + DBG("width="<<sizeW); + DBG("height="<<sizeH); } } diff --git a/QiaoJiaSystem/StructureApp/FaceRpcElement.h b/QiaoJiaSystem/StructureApp/FaceRpcElement.h index bb12780..64002da 100644 --- a/QiaoJiaSystem/StructureApp/FaceRpcElement.h +++ b/QiaoJiaSystem/StructureApp/FaceRpcElement.h @@ -54,6 +54,7 @@ TriggerElement m_triggerElement; SdkRule m_sdkRule; bool m_bIsMask; + bool m_bSetWH; }; #endif // FACERPCELEMENT_H diff --git a/QiaoJiaSystem/StructureApp/JudgmentRetrogradeTool.cpp b/QiaoJiaSystem/StructureApp/JudgmentRetrogradeTool.cpp index d0f6d34..34d4b3c 100644 --- a/QiaoJiaSystem/StructureApp/JudgmentRetrogradeTool.cpp +++ b/QiaoJiaSystem/StructureApp/JudgmentRetrogradeTool.cpp @@ -13,6 +13,7 @@ m_triggerElement(0, 0), m_sdkRule(rule), pManagerEsDB(nullptr), + m_bSetWH(false), pointArray(nullptr), npts(0) { @@ -31,8 +32,13 @@ } } +bool JudgmentRetrogradeTool::init(QString area, QString line) +{ + m_area=area; + m_line=line; +} -bool JudgmentRetrogradeTool::init(QString area, QString line) { +bool JudgmentRetrogradeTool::setMask(QString area, QString line) { //#todo string ->json QJsonArray arrayAreas = getJsonArrayFromQString(area); @@ -41,14 +47,17 @@ } int size=arrayAreas.size(); QVector<QPoint> vec; + float sizeW=(float)appPref.getIntData(m_sdkRule.strCamId.toStdString()+"width")/480; + float sizeH=(float)appPref.getIntData(m_sdkRule.strCamId.toStdString()+"height")/270; + for (int i = 0; i < arrayAreas.size(); ++i) { pointArray=new cv::Point2i[size]; - for (int i = 0; i < size; ++i) { QJsonValue jsonValue = arrayAreas[i]; QJsonObject obj = jsonValue.toObject(); - int x = obj.value("x").toDouble() * 4; - int y = obj.value("y").toDouble() * 4; - pointArray[i]={x,y}; + int x = obj.value("x").toDouble() *sizeW; + int y = obj.value("y").toDouble() *sizeH; vec.push_back(QPoint(x, y)); + DBG("width="<<sizeW); + DBG("height="<<sizeH); } @@ -345,4 +354,9 @@ void JudgmentRetrogradeTool::setImage(const cv::Mat &value) { value.copyTo(image); + if(!m_bSetWH) + { + setMask(m_area,m_line); + m_bSetWH=true; + } } diff --git a/QiaoJiaSystem/StructureApp/JudgmentRetrogradeTool.h b/QiaoJiaSystem/StructureApp/JudgmentRetrogradeTool.h index d69df24..6ab8995 100644 --- a/QiaoJiaSystem/StructureApp/JudgmentRetrogradeTool.h +++ b/QiaoJiaSystem/StructureApp/JudgmentRetrogradeTool.h @@ -1,4 +1,4 @@ -// +锘�// // Created by basic on 18-8-24. // @@ -74,6 +74,8 @@ void setImage(const cv::Mat &value); private: + bool setMask(QString area, QString line); + void setPerPoint(const long &, cv::Point2f); void setPerRect(const long &, cv::Rect rect); @@ -141,6 +143,9 @@ cv::Point2i* pointArray; int npts; + QString m_area; + QString m_line; + bool m_bSetWH; }; diff --git a/QiaoJiaSystem/StructureApp/PerStaticElement.cpp b/QiaoJiaSystem/StructureApp/PerStaticElement.cpp index 667bb9a..1aa7c86 100644 --- a/QiaoJiaSystem/StructureApp/PerStaticElement.cpp +++ b/QiaoJiaSystem/StructureApp/PerStaticElement.cpp @@ -17,7 +17,8 @@ m_triggerElement(0,0), m_lTime(AppUtil::getCurrentUs()), pManagerEsDB(nullptr), -m_bIsMask(true) +m_bIsMask(true), +m_bSetWH(false) { pManagerEsDB=new EsDBTool(appPref.getStringData("ipAdd"), appPref.getIntData("ipPort")); @@ -36,7 +37,7 @@ void PerStaticElement::threadInitial() { - setMask(m_sdkRule.strAreas.toStdString()); +// setMask(m_sdkRule.strAreas.toStdString()); } @@ -175,14 +176,17 @@ int size=arrayAreas.size(); npts=size; pointArray=new cv::Point2i[size]; + float sizeW=(float)appPref.getIntData(m_sdkRule.strCamId.toStdString()+"width")/480; + float sizeH=(float)appPref.getIntData(m_sdkRule.strCamId.toStdString()+"height")/270; for(int i = 0;i < arrayAreas.size();++i) { QJsonValue jsonValue = arrayAreas[i]; QJsonObject obj = jsonValue.toObject(); - int x = obj.value("x").toDouble()*4; - int y = obj.value("y").toDouble()*4; + int x = obj.value("x").toDouble() *sizeW; + int y = obj.value("y").toDouble() *sizeH; mPolygon<<(QPoint(x,y)); - + DBG("width="<<sizeW); + DBG("height="<<sizeH); } } QJsonArray PerStaticElement::getJsonArrayFromQString(const QString& strJson) @@ -300,4 +304,9 @@ { value.copyTo(image); + if(!m_bSetWH) + { + setMask(m_sdkRule.strAreas.toStdString()); + m_bSetWH=true; + } } diff --git a/QiaoJiaSystem/StructureApp/PerStaticElement.h b/QiaoJiaSystem/StructureApp/PerStaticElement.h index fb55313..6380f24 100644 --- a/QiaoJiaSystem/StructureApp/PerStaticElement.h +++ b/QiaoJiaSystem/StructureApp/PerStaticElement.h @@ -80,6 +80,7 @@ unsigned long long m_lTime; EsDBTool* pManagerEsDB; bool m_bIsMask; + bool m_bSetWH; cv::Point2i* pointArray; int npts; }; diff --git a/QiaoJiaSystem/StructureApp/PerimeterElement.cpp b/QiaoJiaSystem/StructureApp/PerimeterElement.cpp index c081c6b..bdb066f 100644 --- a/QiaoJiaSystem/StructureApp/PerimeterElement.cpp +++ b/QiaoJiaSystem/StructureApp/PerimeterElement.cpp @@ -22,6 +22,7 @@ m_triggerElement(rule.nTriggerDelay*8,0), pManagerEsDB(nullptr), m_bIsMask(true), + m_bSetWH(false), pointArray(nullptr) { @@ -42,7 +43,7 @@ void PerimeterElement::threadInitial() { - setMask(m_sdkRule.strAreas.toStdString()); +// setMask(m_sdkRule.strAreas.toStdString()); } @@ -56,7 +57,7 @@ bool state = false; m_recVec.clear(); - // DBG("Objs="<<mObjs.size()<<" fSensitivity="<<m_sdkRule.fSensitivity<<" nThreshold"<<m_sdkRule.nThreshold); +// DBG("Objs="<<mObjs.size()<<" fSensitivity="<<m_sdkRule.fSensitivity<<" nThreshold"<<m_sdkRule.nThreshold); for (auto obj:mObjs) { @@ -111,6 +112,7 @@ } + switch (m_sdkRule.nSdkType) { case PerimeterSdk: //state = num > 0 ; @@ -163,9 +165,6 @@ if (m_triggerElement.getTriggerState() ) { if(num > 0) { - - - if(pointArray!=nullptr) { const cv::Point2i* ppt[1] = { pointArray }; @@ -257,22 +256,16 @@ } int size = arrayAreas.size(); npts = size; -// pointArray=new cv::Point2i*[1]; -// pointArray[0]=new cv::Point2i[size]; - - pointArray=new cv::Point2i[npts]; - - + float sizeW=(float)appPref.getIntData(m_sdkRule.strCamId.toStdString()+"width")/480; + float sizeH=(float)appPref.getIntData(m_sdkRule.strCamId.toStdString()+"height")/270; + pointArray=new cv::Point2i[npts]; for (int i = 0; i < size; ++i) { QJsonValue jsonValue = arrayAreas[i]; QJsonObject obj = jsonValue.toObject(); - int x = obj.value("x").toDouble() * 4; - int y = obj.value("y").toDouble() * 4; - + int x = obj.value("x").toDouble() *sizeW; + int y = obj.value("y").toDouble() *sizeH; pointArray[i]={x,y}; - - if(m_sdkRule.nSdkType == PerimeterSdk) { poly1.push_back(Point(x,y)); @@ -281,7 +274,8 @@ { mPolygon << (QPoint(x, y)); } - + DBG("width="<<sizeW); + DBG("height="<<sizeH); } @@ -302,6 +296,12 @@ // image = cv::Mat(value.rows, value.cols, CV_8UC3, sharedMemory->data()); // } value.copyTo(image); + if(!m_bSetWH) + { + setMask(m_sdkRule.strAreas.toStdString()); + m_bSetWH=true; + } + } bool PerimeterElement::getTriggerState() const { diff --git a/QiaoJiaSystem/StructureApp/PerimeterElement.h b/QiaoJiaSystem/StructureApp/PerimeterElement.h index 24f32f7..4a1d3fe 100644 --- a/QiaoJiaSystem/StructureApp/PerimeterElement.h +++ b/QiaoJiaSystem/StructureApp/PerimeterElement.h @@ -87,6 +87,7 @@ bool m_bIsMask; std::vector<Point> poly1; + bool m_bSetWH; cv::Point2i* pointArray; }; -- Gitblit v1.8.0