#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