Blame view

src/ai_platform/det_obj_header.h 2.73 KB
09c2d08c   Hu Chunming   arm交付版
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  /*
   * @Author: yangzilong
   * @Date: 2021-11-24 11:39:57
   */
  
  #pragma once
  
  #include "header.h"
  #include <string.h>
  #include <set>
  #include <bitset>
  
  using namespace std;
  
  #define VTTYPECOUNT 10		//支持的最大类别数
  #define MAX_OBJ_COUNT 100
  
  //设置最小检测框,直接指定sy_rect的宽高即可,各种类目标小于最小检测框大小时不进行快照的保存和后续二次属性分析
  //sy_rect m_boxsize[DETECTTYPE] = { sy_rect(0,0,40, 90), sy_rect(0,0,50, 80), sy_rect(0,0,50, 80), sy_rect(0,0,60, 80), sy_rect(0,0,80, 80), sy_rect(0,0,90, 90), sy_rect(0,0,100, 100), sy_rect(0,0,100, 100), sy_rect(0,0,100, 100) };  //行人 自行�?摩托�?三轮�?小型�?大车 卡车 拖拉�?中巴
  
  struct OBJ_INDEX {
  	int index;
  	int count;  //用于对index的计数
02e5e637   Zhao Shuaihua   增加行人/非机动车占机动车道(50...
24
  	vector<sy_point> center_points; //存储轨迹中心点坐标--
09c2d08c   Hu Chunming   arm交付版
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
  	OBJ_INDEX() : count(0), index(0) {}
  };
  
  // 0-行人 1-自行车 2-摩托车 3-三轮车 4-小型车 5-大车 6-卡车 7-拖拉机 8-中巴
  enum class det_class_label_t
  {
  	HUMAN = 0,
  
  	BICYCLE = 1,
  	MOTOCYCLE = 2,
  	TRICYCLE = 3,
  
  	SMALL_CAR = 4,
  	LARGE_CAR = 5,
  	TRUCK = 6,
  	TRACTOR = 7,
  	MEDIUM_BUS = 8,
  };
  
  typedef struct det_objinfo	//结果结构体
  {
  	int left;
  	int top;
  	int right;
  	int bottom;
  	int center_x;
  	int center_y;
  
  	int index;				//	行人/车辆类别,支持10
  	long id;					//	目标唯一ID,同一ID为同一目标
  	int num;				//	ID序列下的第num
  	double confidence;		//	置信度
  	int snap_flag;
  	sy_point landmark_point[25];//人脸关键点位置信息
  	//-added by zsh 220719 人脸姿态角-
  	float roll = 0.0; 
  	float yaw = 0.0;												
  	float pitch = 0.0;
  	//-------------------------------
  }det_objinfo;
  
  typedef struct onelevel_det_result
  {
  	string task_id;
  	int obj_count;
  	det_objinfo obj[MAX_OBJ_COUNT];
  }onelevel_det_result;
  
  
  struct OBJ_KEY {
  	string video_id;
  	int obj_id;
  
  	bool operator< (OBJ_KEY const& _A) const
  	{
  		if (strcmp(video_id.c_str(), _A.video_id.c_str()) < 0)  return true;
  		if (strcmp(video_id.c_str(), _A.video_id.c_str()) == 0) return obj_id < _A.obj_id;
  
  		return false;
  	}
  	bool operator== (OBJ_KEY const& _A) const
  	{
  		if (strcmp(video_id.c_str(), _A.video_id.c_str())==0 && obj_id == _A.obj_id)
  			return true;
  		else
  			return false;
  	}
  };
  
  #define EDGESIZE 4
  #define SCALE_OUT 10 //	外扩信息
  
  const sy_rect m_boxsize[DETECTTYPE] = { sy_rect(0, 0, 40, 90), sy_rect(0, 0, 50, 80), sy_rect(0, 0, 50, 80), sy_rect(0, 0, 60, 80), sy_rect(0, 0, 80, 80),
  sy_rect(0, 0, 90, 90), sy_rect(0, 0, 100, 100), sy_rect(0, 0, 100, 100), sy_rect(0, 0, 100, 100) };   //行人 自行车 摩托车 三轮车 小型车 大车 卡车 拖拉机 中巴
  // const int minDistance[EDGESIZE] = { 35, 50, 35, 50 };
  const int minDistance[EDGESIZE] = { 80, 100, 80, 100 };