Blame view

src/ai_engine_module/HumanCarAnalysis.cpp 1.67 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
31
32
33
34
35
36
37
38
39
40
41
42
43
  #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;
  }
  
  int HumanCarAnalysis::detect(vector<sy_img> vec_img){
  
      ACL_CALL(aclrtSetCurrentContext(ctx), SY_SUCCESS, SY_FAILED);
  
      const int batchsize = vec_img.size();
      hcp_analysis_result * results = new hcp_analysis_result[batchsize];
  
      int ret = SY_FAILED;
  
      do
      {
          ret = hcp_batch(m_handle, vec_img.data(), batchsize, results);
          if (SY_SUCCESS != ret) {
f171c20a   Hu Chunming   添加moter_rainshed ...
44
              printf("hcp_batch failed!");
4a273a4a   Hu Chunming   添加hcp和hp
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
              break;
          }
          
          for(int batchIdx = 0;batchIdx<batchsize;batchIdx++){ 
              for (int i = 0; i < HCP_ATTRI_INDEX_SIZE; i++) {   
                  printf("hcp index:%d,confidence:%f\n",results[batchIdx].res_objs[i].res_index,results[batchIdx].res_objs[i].res_prob);
              }
          }
      } while (0);
  
      if (results) {
          delete [] results;
      }
  
      return ret;
  }
  
  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;
  }