TrafficStatistics.h 1.43 KB
#pragma once
#include <vector>
#include <algorithm>
#include "../VPT.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(VPT_ObjInfo *result, int resSize, vector<KalmanBoxTracker> &trackers, vector <VPT_TrafficResult> &trafficArray);

	void LineRectMethod(VPT_ObjInfo *result, vector<KalmanBoxTracker> &trackers, int resSize, vector <VPT_TrafficResult> &trafficArray);
	void LineLineMethod(VPT_ObjInfo *result, vector<KalmanBoxTracker> &trackers, int resSize, vector <VPT_TrafficResult> &trafficArray);
	void LineAndRectMethod(VPT_ObjInfo *result, vector<KalmanBoxTracker> &trackers, int resSize, vector <VPT_TrafficResult> &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 <VPT_Line> lineArray;
	int mLineCounter;
};