| | |
| | | runAllApp(); |
| | | } |
| | | //edit camera's sdks |
| | | // else/* if ((rec_sdk_old.str_sdks != rec_sdk.str_sdks) || |
| | | // (rec_sdk_old.str_det_thr != rec_sdk.str_det_thr) || |
| | | // (rec_sdk_old.str_cmp_thr != rec_sdk.str_cmp_thr)) */{ |
| | | // killVideoAnalysFromHCApp(); |
| | | // sleep(1); |
| | | // runAllApp(); |
| | | // } |
| | | else/* if ((rec_sdk_old.str_sdks != rec_sdk.str_sdks) || |
| | | (rec_sdk_old.str_det_thr != rec_sdk.str_det_thr) || |
| | | (rec_sdk_old.str_cmp_thr != rec_sdk.str_cmp_thr)) */ |
| | | { |
| | | killVideoAnalysFromHCApp(); |
| | | sleep(1); |
| | | runAllApp(); |
| | | } |
| | | |
| | | Json::Value value_out; |
| | | value_out["str_cam_dev_id"] = rec.str_cam_dev_id.toStdString(); |
| | |
| | | // int max=appPref.getIntData("n_cut_max_duration"); |
| | | // recordInit(40,100); |
| | | videoCaptureElement.registerConnector([&] { |
| | | |
| | | mutex.lock(); |
| | | cv::Mat imageTemp = videoCaptureElement.getImage(); |
| | | |
| | | std::string strNewTime; |
| | |
| | | if (bRecordVideoEnable) { |
| | | newRecordVideoElement.pushImgBuf(strNewTime, imageTemp); |
| | | newRecordVideoElement.setSdkTrigger(faceRpcElement.getTriggerState() ||//TODO |
| | | personElement.getTrigger() || |
| | | personElement.getTriggerState() || |
| | | leftJudgment.getTriggerState() || |
| | | rightJudgment.getTriggerState() || |
| | | perimeterElement.getTriggerState() || |
| | |
| | | perHubElement.getTriggerState() || |
| | | perStaticElement.getTriggerState() |
| | | ); |
| | | |
| | | |
| | | } |
| | | |
| | |
| | | imageDrawElement.setImage(imageTemp); |
| | | imageDrawElement.submit(); |
| | | } |
| | | |
| | | if (bRecordVideoEnable) { |
| | | registerElement(triggerElement); |
| | | } |
| | | mutex.unlock(); |
| | | // if (bRecordVideoEnable) { |
| | | // registerElement(triggerElement); |
| | | // } |
| | | }); |
| | | |
| | | |
| | |
| | | registerElement(faceExtractElement); |
| | | } |
| | | registerElement(imageDrawElement); |
| | | registerElement(newRecordVideoElement); |
| | | // registerElement(newRecordVideoElement); |
| | | videoCaptureElement.setOutPutInterval(3); |
| | | faceExtractElement.setProperty("index", to_string(m_index)); |
| | | registerElement(yoloRpcElement); |
| | |
| | | leftJudgment.init(rule.strAreas, rule.strLine); |
| | | rightJudgment.init(rule.strExAreas, rule.strExLine); |
| | | yoloRpcElement.registerConnector([&] { |
| | | leftJudgment.setYoloObjects(yoloRpcElement.getLastScoreRects()); |
| | | rightJudgment.setYoloObjects(yoloRpcElement.getLastScoreRects()); |
| | | leftJudgment.setImage(yoloRpcElement.getImage()); |
| | | rightJudgment.setImage(yoloRpcElement.getImage()); |
| | | if(!leftJudgment.isBusy()) |
| | | { |
| | | leftJudgment.setYoloObjects(yoloRpcElement.getLastScoreRects()); |
| | | leftJudgment.setImage(yoloRpcElement.getImage()); |
| | | } |
| | | if(!rightJudgment.isBusy()) |
| | | { |
| | | rightJudgment.setYoloObjects(yoloRpcElement.getLastScoreRects()); |
| | | |
| | | rightJudgment.setImage(yoloRpcElement.getImage()); |
| | | } |
| | | |
| | | }); |
| | | registerElement(leftJudgment); |
| | | registerElement(rightJudgment); |
| | |
| | | SdkRuleMap m_sdkRuleMap; |
| | | std::string m_localIp; |
| | | std::string getFullFileName(); |
| | | |
| | | std::mutex mutex; |
| | | }; |
| | | |
| | | #endif // APPPIPECONTROLLER_H |
| | |
| | | faceSearchRpcClient(appPref.getStringData("faceSear.proxy"), appPref.getStringData("faceSear.ip"), |
| | | appPref.getIntData("faceSear.port"), "tcp"), |
| | | // faceSearchRpcClient("faceCmServer", "", 10004, "tcp") |
| | | m_sdkRule(rule) { |
| | | m_sdkRule(rule) |
| | | { |
| | | sharedMemory = new QSharedMemory(QString(shareMemoryName.c_str())); |
| | | if (!sharedMemory->create(4608 * 2592 * 4)) { |
| | | sharedMemory->attach(); |
| | |
| | | //#todo |
| | | t_json["picDate"] = faceExtractQueueTmp[i].scoredRects[j].properties["time"]; |
| | | DBG("picDate=" << t_json["picDate"].asString()); |
| | | // DBG("timeC ::::B" << t_json["picDate"].asString()); |
| | | // DBG("timeC ::::B" << t_json["picDate"m_bIsMask].asString()); |
| | | // t_json["picDate"] = AppUtil::getTimeSecString(); |
| | | |
| | | t_json["content"] = "wait todo"; |
| | |
| | | #ifndef FACEEXTRACTELEMENT_H |
| | | #ifndef FACEEXTRACTELEMENT_H |
| | | #define FACEEXTRACTELEMENT_H |
| | | |
| | | #include <FaceServer.h> |
| | |
| | | // rpcClient("faceServer","",10002,"tcp"), |
| | | sharedMemory(nullptr), |
| | | trackingTrigger(nullptr), |
| | | m_sdkRule(rule) |
| | | m_sdkRule(rule), |
| | | m_bIsMask(true) |
| | | { |
| | | sharedMemory = new QSharedMemory(QString(shareMemoryName.c_str())); |
| | | if (!sharedMemory->create(4608 * 2592 * 4)) { |
| | |
| | | int h = face.rcFace.bottom - face.rcFace.top; |
| | | QRect re(x,y,w,h); |
| | | QPoint center = re.center(); |
| | | if(!mPolygon.containsPoint(center,Qt::OddEvenFill)) |
| | | if(m_bIsMask && !mPolygon.containsPoint(center,Qt::OddEvenFill)) |
| | | { |
| | | return; |
| | | } |
| | |
| | | QJsonArray arrayAreas = getJsonArrayFromQString(QString::fromStdString(mask)); |
| | | if(arrayAreas.isEmpty()) |
| | | { |
| | | m_bIsMask=false; |
| | | return;//do not detect |
| | | } |
| | | for(int i = 0;i < arrayAreas.size();++i) |
| | |
| | | QPolygon mPolygon; |
| | | TriggerElement m_triggerElement; |
| | | SdkRule m_sdkRule; |
| | | bool m_bIsMask; |
| | | }; |
| | | |
| | | #endif // FACERPCELEMENT_H |
| | |
| | | |
| | | for (auto yoloObj: yoloObjectsData) { |
| | | auto rect = CvUtil::zoomRect(yoloObj.rect, 1, 1); |
| | | //[{"x":1.5999756,"y":82.533325},{"x":1.5999756,"y":180.53333},{"x":61.599976,"y":175.53333},{"x":63.599976,"y":66.533325}] |
| | | //cv::rectangle(image, cv::Rect(4,328,252,480 ), cv::Scalar(0, 0, 255), 2); |
| | | cv::rectangle(image, rect, yoloObj.id >= 0 ? cv::Scalar(255, 0, 0) : cv::Scalar(0, 255, 255), 2); |
| | | int i = 0; |
| | | for (auto &property:yoloObj.properties) { |
| | |
| | | #include <basic/util/app/AppPreference.hpp> |
| | | |
| | | JudgmentRetrogradeTool::JudgmentRetrogradeTool(const SdkRule &rule) : |
| | | TimerElement(1000), |
| | | m_triggerElement(rule.nTriggerDelay * 8, 0), |
| | | m_sdkRule(rule), |
| | | pManagerEsDB(nullptr) { |
| | | pManagerEsDB(nullptr) |
| | | { |
| | | pManagerEsDB = new EsDBTool(appPref.getStringData("ipAdd"), appPref.getIntData("ipPort")); |
| | | } |
| | | |
| | |
| | | //#todo string ->json |
| | | QJsonArray arrayAreas = getJsonArrayFromQString(area); |
| | | if (arrayAreas.isEmpty()) { |
| | | return false;//do not detect |
| | | return false; |
| | | } |
| | | QVector<QPoint> vec; |
| | | for (int i = 0; i < arrayAreas.size(); ++i) { |
| | |
| | | return JRTOOL::getAngelOfTwoVector(directionVectorPoint, point); |
| | | } |
| | | |
| | | void JudgmentRetrogradeTool::timerFunc() { |
| | | void JudgmentRetrogradeTool::threadFunc() { |
| | | func(); |
| | | fireConnectors(); |
| | | } |
| | |
| | | #include <map> |
| | | #include <list> |
| | | #include <opencv2/opencv.hpp> |
| | | #include <basic/pipe/TimerElement.h> |
| | | //#include <basic/pipe/TimerElement.h> |
| | | #include "YoloRpcElement.h" |
| | | #include <QSharedMemory> |
| | | #include <QString> |
| | |
| | | #include "DBStruct.h" |
| | | #include <basic/db/Elasticsearch/EsDBTool.h> |
| | | #include <jsoncpp/json/json.h> |
| | | |
| | | #include <basic/pipe/PipeElement.h> |
| | | struct VectorPoint { |
| | | cv::Point2f start_Point; |
| | | cv::Point2f end_Point; |
| | |
| | | } |
| | | |
| | | |
| | | class JudgmentRetrogradeTool : public TimerElement { |
| | | class JudgmentRetrogradeTool : public basic::PipeElement{ |
| | | public: |
| | | JudgmentRetrogradeTool() : TimerElement(1000) {} |
| | | JudgmentRetrogradeTool() {} |
| | | |
| | | JudgmentRetrogradeTool(const SdkRule &rule); |
| | | |
| | |
| | | |
| | | private: |
| | | // virtual void threadInitial() override; |
| | | virtual void timerFunc() override; |
| | | virtual void threadFunc()override; |
| | | // virtual void timerFunc() override; |
| | | // virtual void threadClosing()override; |
| | | |
| | | private: |
| | |
| | | { |
| | | |
| | | // basicPath(); |
| | | isRecord=false; |
| | | m_cutPath= appPref.getStringData("user.loop.absolute.path"); |
| | | |
| | | recordInit(appPref.getIntData("n_cut_min_duration"),appPref.getIntData("n_cut_max_duration")); |
| | |
| | | std::string NewRecordVideoElement::startRecord() { |
| | | |
| | | // ImgInfo info=m_HiredisTool.getImage(camID); |
| | | //isRecord=true; |
| | | ImgInfo info; |
| | | getImg(info); |
| | | std::string srcPath= getFileName(info.time); |
| | |
| | | // DBG("sdkTrigger:" << sdkTrigger); |
| | | m_hiredisTool.pushImageBuf(m_filename,info.img); |
| | | m_hiredisTool.addFileInfo(m_filename,RECORD_ENDING); |
| | | // isRecord=false; |
| | | } |
| | | |
| | | void NewRecordVideoElement::doRecord() { |
| | |
| | | // info.img=img; |
| | | info.time=time; |
| | | m_imgBufQue.push(info); |
| | | // if(isRecord) |
| | | // DBG("camId="<<camID<<"pushtime="<<info.time); |
| | | // int size=m_imgBufQue.size(); |
| | | // DBG("m_imgBufQue size="<<size); |
| | | } |
| | |
| | | { |
| | | m_imgBufQue.pop(); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | void NewRecordVideoElement::threadFunc() |
| | | { |
| | | // Record(); |
| | | } |
| | | void NewRecordVideoElement::threadInitial() |
| | | { |
| | | // if(isRecord) |
| | | // DBG("camId="<<camID<<"gettime="<<info.time); |
| | | |
| | | |
| | | } |
| | | // void NewRecordVideoElement::threadFunc() |
| | | // { |
| | | // Record(); |
| | | // } |
| | | // void NewRecordVideoElement::threadInitial() |
| | | // { |
| | | |
| | | |
| | | // } |
| | | |
| | | void NewRecordVideoElement::Record() { |
| | | switch(recordStatus) |
| | |
| | | #ifndef NEWRECORDVIDEOELEMENT_H |
| | | #define NEWRECORDVIDEOELEMENT_H |
| | | #include <basic/pipe/PipeElement.h> |
| | | //#include <basic/pipe/PipeElement.h> |
| | | #include <basic/pipe_element/ffmpeg/FfmpegElement.h> |
| | | #include "HiredisTool.h" |
| | | //struct ImgInfo |
| | |
| | | // std::string time; |
| | | // cv::Mat img; |
| | | //}; |
| | | class NewRecordVideoElement : public basic::PipeElement{ |
| | | class NewRecordVideoElement { |
| | | |
| | | public: |
| | | |
| | |
| | | void setSdkTrigger(bool isTrigger); |
| | | void pushImgBuf(const std::string& time,cv::Mat& img); |
| | | |
| | | private: |
| | | virtual void threadFunc() override; |
| | | virtual void threadInitial() override; |
| | | //private: |
| | | // virtual void threadFunc() override; |
| | | // virtual void threadInitial() override; |
| | | private: |
| | | void recordInit(int videoMin, int videoMax); |
| | | void Record(); |
| | |
| | | std::queue<ImgInfo> m_imgBufQue; |
| | | HiredisTool m_hiredisTool; |
| | | std::string m_filename; |
| | | bool isRecord; |
| | | }; |
| | | |
| | | #endif // RECORDVIDEOELEMENT_H |
| | |
| | | m_sdkRule(rule), |
| | | m_triggerElement(0,0), |
| | | m_lTime(AppUtil::getCurrentUs()), |
| | | pManagerEsDB(nullptr) |
| | | pManagerEsDB(nullptr), |
| | | m_bIsMask(true) |
| | | { |
| | | pManagerEsDB=new EsDBTool(appPref.getStringData("ipAdd"), appPref.getIntData("ipPort")); |
| | | |
| | |
| | | |
| | | QRect rect(obj.rect.x,obj.rect.y,obj.rect.width,obj.rect.height); |
| | | QPoint center = rect.center(); |
| | | if(mPolygon.containsPoint(center,Qt::OddEvenFill)) |
| | | if(mPolygon.containsPoint(center,Qt::OddEvenFill) || !m_bIsMask) |
| | | { |
| | | for(auto score:m_lastScoreRect) |
| | | { |
| | |
| | | //do temp memery |
| | | |
| | | } |
| | | m_lastScoreRect = mObjs; |
| | | // m_lastScoreRect = mObjs; |
| | | m_lTime =AppUtil::getCurrentUs(); |
| | | } |
| | | |
| | | m_lastScoreRect=mObjs; |
| | | m_triggerElement.triggerOnce(); |
| | | |
| | |
| | | QJsonArray arrayAreas = getJsonArrayFromQString(QString::fromStdString(mask)); |
| | | if(arrayAreas.isEmpty()) |
| | | { |
| | | m_bIsMask=false; |
| | | return;//do not detect |
| | | } |
| | | for(int i = 0;i < arrayAreas.size();++i) |
| | |
| | | std::vector<ScoredRect> m_lastScoreRect; |
| | | unsigned long long m_lTime; |
| | | EsDBTool* pManagerEsDB; |
| | | bool m_bIsMask; |
| | | }; |
| | | |
| | | #endif // PAELEMENT_H |
| | |
| | | mRealNum(0), |
| | | m_triggerElement(rule.nTriggerDelay*8,0), |
| | | pManagerEsDB(nullptr), |
| | | npts(0) { |
| | | m_bIsMask(true) |
| | | { |
| | | |
| | | pManagerEsDB = new EsDBTool(appPref.getStringData("ipAdd"), appPref.getIntData("ipPort")); |
| | | } |
| | |
| | | |
| | | QRect rect(obj.rect.x, obj.rect.y, obj.rect.width, obj.rect.height); |
| | | QPoint center = rect.center(); |
| | | if (mPolygon.containsPoint(center, Qt::OddEvenFill)) { |
| | | if (mPolygon.containsPoint(center, Qt::OddEvenFill) || !m_bIsMask) { |
| | | m_recVec.push_back(obj.rect); |
| | | if (picDate.empty()) { |
| | | picDate = obj.properties["time"]; |
| | |
| | | num++; |
| | | |
| | | |
| | | } |
| | | else |
| | | { |
| | | // DBG("id="<< obj.properties["id"]<<" no containts x="<<rect.center().x()<<" y="<<rect.center().y()); |
| | | } |
| | | |
| | | |
| | |
| | | // DBG("imgUrl="<<imgUrl); |
| | | if (m_triggerElement.getTriggerState() && num!=mRealNum) |
| | | { |
| | | auto t_image = image(CutMask()).clone(); |
| | | |
| | | cv::Mat t_image = image(CutMask()).clone(); |
| | | if(t_image.empty()) |
| | | { |
| | | if(image.empty()) |
| | | { |
| | | DBG("image empty"); |
| | | } |
| | | DBG("t_image empty"); |
| | | return; |
| | | } |
| | | std::string imgUrl = uploadImgToFdfs(t_image); |
| | | saveInfoToEs(imgUrl, picDate); |
| | | DBG("num=" << num << " lastnum=" << mRealNum); |
| | | |
| | | mRealNum = num; |
| | | } |
| | | //if(state) |
| | | // DBG("num=" << num <<"m_triggerElement.getTriggerState()="<<m_triggerElement.getTriggerState()); |
| | | // if(state) |
| | | //DBG("mRealNum=" << mRealNum <<"m_triggerElement.getTriggerState()="<<m_triggerElement.getTriggerState()); |
| | | |
| | | |
| | | mRealNum = num; |
| | | if(!state) |
| | | { |
| | | mRealNum = num; |
| | | } |
| | | |
| | | |
| | | // DBG("m_sdkRule.nSdkType="<<m_sdkRule.nSdkType<<" num="<<num); |
| | |
| | | |
| | | void PerimeterElement::setMask(std::string mask) { |
| | | QJsonArray arrayAreas = getJsonArrayFromQString(QString::fromStdString(mask)); |
| | | if (arrayAreas.isEmpty()) { |
| | | if (arrayAreas.isEmpty() && m_sdkRule.nSdkType != PerimeterSdk) { |
| | | m_bIsMask=false; |
| | | return;//do not detect |
| | | } |
| | | int size = arrayAreas.size(); |
| | |
| | | // DBG("RECT x="<<rect.x<<"y"<<rect.y<<"w"<<rect.width<<"h"<<rect.height); |
| | | return rect; |
| | | } |
| | | bool PerimeterElement::isAnd() |
| | | { |
| | | |
| | | } |
| | |
| | | void setMask(std::string mask); |
| | | bool isInWeek(const std::vector<LActRuleWeekRecord>& ruleWeek); |
| | | cv::Rect CutMask(); |
| | | bool isAnd(); |
| | | private: |
| | | cv::Mat image; |
| | | //cv::Mat mask; |
| | |
| | | |
| | | int npts; |
| | | vector<cv::Rect> m_recVec; |
| | | |
| | | bool m_bIsMask; |
| | | }; |
| | | |
| | | #endif // PAELEMENT_H |
| | |
| | | |
| | | CUR_PATH=`pwd` |
| | | #echo ${CUR_PATH}"/"${SENDFILE} |
| | | #scp ${CUR_PATH}"/"${SENDFILE} basic@192.168.1.185:/home/basic/Apps/QiaoJiaSystem/build |
| | | #scp ${CUR_PATH}"/"${SENDFILE} basic@192.168.1.203:/home/basic/Apps/QiaoJiaSystem/build |
| | | |
| | | |
| | | sendFile() { |
| | |
| | | des_pass=123 |
| | | expect -c " |
| | | # spawn scp -P44100 ${CUR_PATH}"/"$1 dell@58.118.225.79:/home/dell/Apps/QiaoJiaSystem/build |
| | | spawn scp ${CUR_PATH}"/"$1 basic@192.168.1.182:/home/basic/Apps/QiaoJiaSystem/build |
| | | spawn scp ${CUR_PATH}"/"$1 basic@192.168.1.203:/home/basic/Apps/QiaoJiaSystem/build |
| | | expect \"password:\" |
| | | send \"${des_pass}\r\" |
| | | expect eof |