#pragma once #include #include #include "../CD.h" #include "KalmanBoxTracker.h" #include "tempTrafficStatisticsHeader.h" #include "../header.h" using namespace std; enum StatisticsMethod { LINE_RECT_INTERSECTION, LINE_LINE_INTERSECTION, LINE_AND_RECT_INTERSECTION }; struct POINT { int x; int y; POINT(int mx, int my){ x = mx; y = my; } }; class TrafficStatistics { public: TrafficStatistics(StatisticsMethod method); ~TrafficStatistics(); void SetLineArray(VPT_Line *m_line, int m_linecount); void GetTrafficArray(CD_ObjInfo *result, int resSize, vector &trackers, vector &trafficArray); void LineRectMethod(CD_ObjInfo *result, vector &trackers, int resSize, vector &trafficArray); void LineLineMethod(CD_ObjInfo *result, vector &trackers, int resSize, vector &trafficArray); void LineAndRectMethod(CD_ObjInfo *result, vector &trackers, int resSize, vector &trafficArray); //辅助判断函数 bool line_line_intersection(POINT aa, POINT bb, POINT cc, POINT dd); //判断两个线条是否相交 暂时未用到 bool line_rect_intersection(POINT start_p, POINT end_p, int left, int top, int right, int bottom); //判断矩形框与线条是否相交 private: StatisticsMethod statisticsMethod; vector lineArray; int mLineCounter; };