Blame view

src/ai_engine_module/VehicleAnalysis.cpp 4.2 KB
eac85cd5   Hu Chunming   调通va
1
2
3
4
  #include "VehicleAnalysis.h"
  
  
  VehicleAnalysis::VehicleAnalysis() {
eac85cd5   Hu Chunming   调通va
5
6
7
8
9
10
11
      cout << va_get_version() << endl;
  }
  
  VehicleAnalysis::~VehicleAnalysis() {
      release();
  }
  
d708ccb3   Hu Chunming   增加日志
12
13
14
  int VehicleAnalysis::init(VehicleAnalysisParam tParam) {
  
      va_param param;
eac85cd5   Hu Chunming   调通va
15
16
17
18
19
20
21
  	param.vehicle_detect_config= SY_CONFIG_OPEN;  //1.开启车检测 SY_CONFIG_CLOSE  SY_CONFIG_OPEN
      param.vehicle_recg_config= SY_CONFIG_OPEN;     //4.开启车型识别
  	param.vehicle_recg_supplement_config= SY_CONFIG_OPEN;     //4.开启车型识别补充识别
      param.vehicle_plate_det_recg_config= SY_CONFIG_OPEN; //5.开启车牌检测识别	
      param.vehicle_pendant_det_config= SY_CONFIG_OPEN; //6.开启车属性检测识别
      param.vehicle_motor_tricycle_analysis_config= SY_CONFIG_OPEN;  //8.摩托车分析	
      param.vehicle_manned_config= SY_CONFIG_OPEN;  //8.开启载人分析	
bb2c60a8   Hu Chunming   修复 vehicle_illega...
22
      param.vehicle_illegal_config= SY_CONFIG_OPEN;  //7.开启车违规
10667f7c   Hu Chunming   违法载人判断的优化
23
24
  	param.vehicle_color_config= SY_CONFIG_OPEN;  //3.开启车颜色识别
  	param.vehicle_feature_config= SY_CONFIG_OPEN;  //8.开启车辆特征提取
eac85cd5   Hu Chunming   调通va
25
  	
d708ccb3   Hu Chunming   增加日志
26
  	param.gpuid=tParam.devId;
eac85cd5   Hu Chunming   调通va
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
  		
  	//车检测参数	
  	//param.vehicle_det_param.process_min_l = 720;// 720;
  	//param.vehicle_det_param.process_max_l = 1280;//1280;	
  	//param.vehicle_det_param.thresld=0.3;
  	//param.min_obj_size=200;  //最小目标	
  	param.vehicle_det_thresld=0.4;
  	
  	//车牌检测参数
  	//param.vehicle_plate_det_param.process_min_l=320;
  	//param.vehicle_plate_det_param.process_max_l=320;	
  	//param.vehicle_plate_det_param.thresld=0.4;
  	param.vehicle_plate_det_thresld=0.5;
  	
  	//车属性检测参数
  	//param.vehicle_attribute_det_param.process_min_l=360;
  	//param.vehicle_attribute_det_param.process_max_l=640;	
  	//param.vehicle_attribute_det_param.thresld=0.3;
  	param.vehicle_attribute_det_thresld=0.5;
  	
  	//logo检测参数
  	//param.vehicle_logo_det_param.process_min_l=512;
  	//param.vehicle_logo_det_param.process_max_l=512;	
  	//param.vehicle_logo_det_param.thresld=0.1;
  	param.vehicle_logo_det_thresld=0.1;	
  	
  	//车颜色阈值
  	param.vc_thresld = 0.5;
  	
d708ccb3   Hu Chunming   增加日志
56
57
      string dbPath = tParam.sdk_root + "/models/vehicle_analysis/db/vr_h0725x210605_r191230.db";
      string models_path = tParam.sdk_root + "/models/vehicle_analysis/";
eac85cd5   Hu Chunming   调通va
58
  	//车型参数
581a68a4   Hu Chunming   修正parse_road无返回值导...
59
60
  	param.dbPath= (char*)dbPath.data();	
  	param.models_Path= (char*)models_path.data();	//所有模型的地址
eac85cd5   Hu Chunming   调通va
61
  
d708ccb3   Hu Chunming   增加日志
62
63
64
65
66
      param.log_level = tParam.log_level;
      param.log_path = tParam.log_path;
      param.log_days = tParam.log_days;
      param.log_mem = tParam.log_mem;
  
e3062370   Hu Chunming   优化日志
67
      LOG_INFO("va_init start");
15756629   Hu Chunming   添加clothes算法
68
      // 内部有 ctx
eac85cd5   Hu Chunming   调通va
69
70
71
72
73
      int ret = va_init(&m_handle, param);
      if (ret != 0) {
          return -1;
  	}
  
e3062370   Hu Chunming   优化日志
74
      LOG_INFO("va_init success");
eac85cd5   Hu Chunming   调通va
75
76
77
      return 0;
  }
  
b3012672   Hu Chunming   天啊及hp,road_seg子sd...
78
  va_result * VehicleAnalysis::detect(vector<sy_img> vec_img) {
eac85cd5   Hu Chunming   调通va
79
  			
20396d5c   Hu Chunming   添加车头车尾算法
80
      int batch_size = vec_img.size();
eac85cd5   Hu Chunming   调通va
81
82
83
84
85
86
87
88
89
90
91
      
      va_result *result=new va_result[batch_size];
      for(int b=0;b<batch_size;b++)
      {
          result[b].count=0;
          result[b].info=new vehicle_info[100];
          for(int c=0; c<100; c++)
          {
              result[b].info[c].vehicle_pendant_det_res.vpd_res=new v_pendant_d_info[300];	
          }			
      }
b3012672   Hu Chunming   天啊及hp,road_seg子sd...
92
  
d708ccb3   Hu Chunming   增加日志
93
      LOG_INFO("va_batch start");
eac85cd5   Hu Chunming   调通va
94
      
d708ccb3   Hu Chunming   增加日志
95
      int ret = va_batch(m_handle, vec_img.data(), batch_size, result);
eac85cd5   Hu Chunming   调通va
96
  
d708ccb3   Hu Chunming   增加日志
97
      LOG_INFO("va_batch end:{}", ret);
eac85cd5   Hu Chunming   调通va
98
  
eac85cd5   Hu Chunming   调通va
99
      //delete result
b3012672   Hu Chunming   天啊及hp,road_seg子sd...
100
101
102
103
104
105
      // for(int b=0;b<batch_size;b++)
      // {
      //     for(int c=0; c<100; c++)
      //     {
      //         if(result[b].info[c].vehicle_pendant_det_res.vpd_res!=NULL)
      //             delete[] result[b].info[c].vehicle_pendant_det_res.vpd_res;
b3012672   Hu Chunming   天啊及hp,road_seg子sd...
106
107
108
109
      //     }
      //     if(result[b].info!=NULL){
      //         delete[] result[b].info;
      //     }
b3012672   Hu Chunming   天啊及hp,road_seg子sd...
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
      // }
  
      // if(result!=NULL){
      //     delete[] result;
      // }
  
      return result;  
  }
  
  void VehicleAnalysis::release(){
      if (m_handle) {
          va_release(&m_handle);
      }
  }
  
  void VehicleAnalysis::release_result(va_result* result, int batch_size){
eac85cd5   Hu Chunming   调通va
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
      for(int b=0;b<batch_size;b++)
      {
          for(int c=0; c<100; c++)
          {
              if(result[b].info[c].vehicle_pendant_det_res.vpd_res!=NULL)
                  delete[] result[b].info[c].vehicle_pendant_det_res.vpd_res;
              
          }
          if(result[b].info!=NULL){
              delete[] result[b].info;
          }
              
      }
  
      if(result!=NULL){
          delete[] result;
      }
eac85cd5   Hu Chunming   调通va
143
  }