#ifndef PERIMETERELEMENT #define PERIMETERELEMENT #include #include #include #include #include #include "TrackingTrigger.h" #include #include #include #include "DBStruct.h" #include class PerimeterElement : public basic::PipeElement { public: PerimeterElement(){} PerimeterElement(const SdkRule& rule); public: ~PerimeterElement(); //是否有矩形 bool hasRects(); //设置ROI区域 void setImage(const cv::Mat &value); void setYoloObjects(std::vector value); //将检测结果放到此单元中 //void setVptResults(const vector &value); void setObjsResults(const ::YoloDetect::ObjInfos &value); //设置置信度 void setSensitivity(float value); //获取矩形框 std::vector getRects() const; //获取YOLO检测的结果 std::vector getLastScoreRects() const; int getRealNum() const; bool getTriggerState() const; void setFdfs(FastFdsWithLock *p_fdfsClient) { fdfsClient = p_fdfsClient; } void setImage(const cv::Mat &value) const; private: virtual void threadInitial()override; virtual void threadFunc()override; QJsonArray getJsonArrayFromQString(const QString& strJson); std::string uploadImgToFdfs(cv::Mat& image); bool saveInfoToEs(const std::string& imgUrl,const std::string& time); void setMask(std::string mask); bool isInWeek(const std::vector& ruleWeek); cv::Rect CutMask(); bool isAnd(); private: cv::Mat image; //cv::Mat mask; //vector vptResults; ::YoloDetect::ObjInfos m_objs; QPolygon mPolygon; TrackingTrigger *trackingTrigger; ::YoloDetect::stringData cocoData; int mRealNum; std::vector mObjs; TriggerElement m_triggerElement; FastFdsWithLock* fdfsClient; SdkRule m_sdkRule; EsDBTool* pManagerEsDB; int npts; vector m_recVec; bool m_bIsMask; }; #endif // PAELEMENT_H