Blame view

src/ai_engine_module/HumanCarAnalysis.cpp 3.99 KB
4a273a4a   Hu Chunming   添加hcp和hp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  #include "HumanCarAnalysis.h"
  
  HumanCarAnalysis::HumanCarAnalysis(/* args */)
  {
  }
  
  HumanCarAnalysis::~HumanCarAnalysis()
  {
      release();
  }
  
  int HumanCarAnalysis::init(int devId){
      ACL_CALL(aclrtCreateContext(&ctx, devId), SY_SUCCESS, SY_FAILED);
      ACL_CALL(aclrtSetCurrentContext(ctx), SY_SUCCESS, SY_FAILED);
  
      hcp_param param;
      param.modelNames = "./models/hcp/hcp211008_310p.om";
      param.devId = devId;
  
      cout << "hcp_init start " << endl;
      int ret = hcp_init(&m_handle, param);
      if (ret != 0) {
          return -1;
  	}
  
      cout << "hcp_init success " << endl;
  
      return SY_SUCCESS;
  }
  
81e8a405   Hu Chunming   初步完成SDK
31
  std::vector<HumanCarResult> HumanCarAnalysis::detect(vector<sy_img> vec_img){
4a273a4a   Hu Chunming   添加hcp和hp
32
  
81e8a405   Hu Chunming   初步完成SDK
33
      std::vector<HumanCarResult> vec_result;
4a273a4a   Hu Chunming   添加hcp和hp
34
35
36
37
38
39
40
41
  
      const int batchsize = vec_img.size();
      hcp_analysis_result * results = new hcp_analysis_result[batchsize];
  
      int ret = SY_FAILED;
  
      do
      {
81e8a405   Hu Chunming   初步完成SDK
42
43
44
45
46
47
          ret = aclrtSetCurrentContext(ctx);
          if (SY_SUCCESS != ret) {
              printf("aclrtSetCurrentContext failed!");
              break;
          }
  
4a273a4a   Hu Chunming   添加hcp和hp
48
49
          ret = hcp_batch(m_handle, vec_img.data(), batchsize, results);
          if (SY_SUCCESS != ret) {
f171c20a   Hu Chunming   添加moter_rainshed ...
50
              printf("hcp_batch failed!");
4a273a4a   Hu Chunming   添加hcp和hp
51
52
53
54
              break;
          }
          
          for(int batchIdx = 0;batchIdx<batchsize;batchIdx++){ 
a1a053f2   Hu Chunming   修正人骑车逻辑错误
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
              HumanCarResult one_result;
              one_result.head = results[batchIdx].res_objs[0].res_index;                   
              one_result.head_prob = results[batchIdx].res_objs[0].res_prob;
              one_result.eye = results[batchIdx].res_objs[1].res_index;                    
              one_result.eye_prob = results[batchIdx].res_objs[1].res_prob;
              one_result.mouth = results[batchIdx].res_objs[2].res_index;                  
              one_result.mouth_prob = results[batchIdx].res_objs[2].res_prob;
              one_result.weibo = results[batchIdx].res_objs[3].res_index;                  
              one_result.weibo_prob = results[batchIdx].res_objs[3].res_prob;
              one_result.up_wear = results[batchIdx].res_objs[4].res_index;                
              one_result.up_wear_prob = results[batchIdx].res_objs[4].res_prob;
              one_result.up_color = results[batchIdx].res_objs[5].res_index;               
              one_result.up_color_prob = results[batchIdx].res_objs[5].res_prob;
              one_result.up_tex = results[batchIdx].res_objs[6].res_index;                 
              one_result.up_tex_prob = results[batchIdx].res_objs[6].res_prob;
              one_result.bag = results[batchIdx].res_objs[7].res_index;                    
              one_result.bag_prob = results[batchIdx].res_objs[7].res_prob;
              one_result.sex = results[batchIdx].res_objs[8].res_index;                    
              one_result.sex_prob = results[batchIdx].res_objs[8].res_prob;
              one_result.age = results[batchIdx].res_objs[9].res_index;                    
              one_result.age_prob = results[batchIdx].res_objs[9].res_prob;
              one_result.carColor = results[batchIdx].res_objs[10].res_index;               
              one_result.carColor_prob = results[batchIdx].res_objs[10].res_prob;
              one_result.orient = results[batchIdx].res_objs[11].res_index;                 
              one_result.orient_prob = results[batchIdx].res_objs[11].res_prob;
              one_result.dasan = results[batchIdx].res_objs[12].res_index;                  
              one_result.dasan_prob = results[batchIdx].res_objs[12].res_prob;
              one_result.take = results[batchIdx].res_objs[13].res_index;                   
              one_result.take_prob = results[batchIdx].res_objs[13].res_prob;
  
              vec_result.push_back(one_result);
4a273a4a   Hu Chunming   添加hcp和hp
86
87
88
89
90
91
92
          }
      } while (0);
  
      if (results) {
          delete [] results;
      }
  
81e8a405   Hu Chunming   初步完成SDK
93
      return vec_result;
4a273a4a   Hu Chunming   添加hcp和hp
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
  }
  
  int HumanCarAnalysis::release() {
  
      ACL_CALL(aclrtSetCurrentContext(ctx), SY_SUCCESS, SY_FAILED);	
  
      if (m_handle) {
          hcp_release(&m_handle);
      }
  
      if(ctx){
          aclrtDestroyContext(ctx);
          ctx = nullptr;
      }
  
      return SY_SUCCESS;
  }