#pragma once #include #include #include #include // --------------------------------------------------------------------------- // // --------------------------------------------------------------------------- typedef float track_t; typedef cv::Point_ Point_t; #define El_t CV_32F #define Mat_t CV_32FC typedef std::vector assignments_t; typedef std::vector distMatrix_t; /// /// \brief config_t /// typedef std::multimap config_t; /// /// \brief The CRegion class /// class CRegion { public: CRegion() : m_type(""), m_confidence(-1) { } CRegion(const cv::Rect& rect) : m_brect(rect) { B2RRect(); } CRegion(const cv::RotatedRect& rrect) : m_rrect(rrect) { R2BRect(); } CRegion(const cv::Rect& rect, const std::string& type, float confidence) : m_brect(rect), m_type(type), m_confidence(confidence) { B2RRect(); } CRegion(const cv::RotatedRect& rrect, const std::string& type, float confidence) : m_rrect(rrect), m_type(type), m_confidence(confidence) { R2BRect(); } cv::RotatedRect m_rrect; cv::Rect m_brect; std::string m_type; float m_confidence = -1; mutable cv::Mat m_hist; private: /// /// \brief R2BRect /// \return /// cv::Rect R2BRect() { m_brect = m_rrect.boundingRect(); return m_brect; } /// /// \brief B2RRect /// \return /// cv::RotatedRect B2RRect() { m_rrect = cv::RotatedRect(m_brect.tl(), cv::Point2f(static_cast(m_brect.x + m_brect.width), static_cast(m_brect.y)), m_brect.br()); return m_rrect; } }; typedef std::vector regions_t; /// /// /// namespace tracking { /// /// \brief The Detectors enum /// enum Detectors { Motion_VIBE, Motion_MOG, Motion_GMG, Motion_CNT, Motion_SuBSENSE, Motion_LOBSTER, Motion_MOG2, Face_HAAR, Pedestrian_HOG, Pedestrian_C4, SSD_MobileNet, Yolo_OCV, Yolo_Darknet, Yolo_TensorRT }; /// /// \brief The DistType enum /// enum DistType { DistCenters, // Euclidean distance between centers, pixels DistRects, // Euclidean distance between bounding rectangles, pixels DistJaccard, // Intersection over Union, IoU, [0, 1] DistHist, // Bhatacharia distance between histograms, [0, 1] DistsCount }; /// /// \brief The FilterGoal enum /// enum FilterGoal { FilterCenter, FilterRect }; /// /// \brief The KalmanType enum /// enum KalmanType { KalmanLinear, KalmanUnscented, KalmanAugmentedUnscented }; /// /// \brief The MatchType enum /// enum MatchType { MatchHungrian/*, //MatchBipart*/ }; /// /// \brief The LostTrackType enum /// enum LostTrackType { TrackNone, TrackKCF, TrackMIL, TrackMedianFlow, TrackGOTURN, TrackMOSSE, TrackCSRT/*, TrackDAT, TrackSTAPLE, TrackLDES*/ }; }