#ifndef PERIMETERELEMENT #define PERIMETERELEMENT #include #include #include #include #include #include #include "TrackingTrigger.h" #include #include #include class PerimeterElement : public basic::PipeElement { public: PerimeterElement(int alarm_people_num=1); public: ~PerimeterElement(); //是否有矩形 bool hasRects(); //设置ROI区域 void setMask(std::string mask); 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; } 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 ::YoloDetect::ObjInfo& obj); private: cv::Mat image; cv::Mat mask; //vector vptResults; ::YoloDetect::ObjInfos m_objs; float sensitivity; QPolygon mPolygon; TrackingTrigger *trackingTrigger; ::YoloDetect::stringData cocoData; int mRealNum; int m_nAlarmPeopleNum; std::vector mObjs; TriggerElement m_triggerElement; FastFdsWithLock* fdfsClient; }; #endif // PAELEMENT_H