Blame view

algorithm/hp2/hp_test/test.cpp 3.75 KB
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
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
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
  #include <iostream>

  #include <sstream>

  #include <fstream>

  #include "human_parsing.h"

  #include "opencv2/opencv.hpp"

  #include "opencv2/imgcodecs/legacy/constants_c.h"

  #include "opencv2/imgproc/types_c.h"

  #include "time.h"

  #include "sys/time.h"

  #include "sy_errorinfo.h"

  #include "utils.h"

  #include "dvpp_process.h"

  

  using namespace std;

  using namespace cv;

  #include <chrono>

  #include <dirent.h>

  

  double msecond() {

      struct timeval tv;

      gettimeofday(&tv, 0);

      return (tv.tv_sec * 1000.0 + tv.tv_usec / 1000.0);

  }

  

  

  void getAllNm(std::string pthNm, std::vector<std::string>& fileList)

  {

          DIR    *dir;

      struct    dirent    *ptr;

      dir = opendir(pthNm.c_str()); ///open the dir

      int filenum = 0;

      while((ptr = readdir(dir)) != NULL) ///read the list of this dir

      {

          // char* to string

          std::string curNm = ptr->d_name;

          if(curNm != "." && curNm != "..")

          {

                  filenum++;

                  fileList.push_back(curNm);

                  //printf("file %d name: %s\n", filenum, curNm.c_str());

          }

     }

      closedir(dir);

  }

  

  int main() {

      cout << hp_get_version() << endl;

  	const char*  img_file_path = "../../../data/hp/";

  	string saveimagepath= "../../../data/result/";

  	

      hp_param param;

      param.modelNames = "../hp/models/hp220908_310p.om";

      param.devId = 0;

  

      void* handle = nullptr;

      cout << "init start " << endl;

      ACL_CALL(aclInit(nullptr), ACL_SUCCESS, SY_FAILED);

      ACL_CALL(aclrtSetDevice(param.devId), ACL_SUCCESS, SY_FAILED);

      aclrtContext ctx;

      ACL_CALL(aclrtCreateContext(&ctx, param.devId), ACL_SUCCESS, SY_FAILED);

      aclrtStream stream = nullptr;

  	ACL_CALL(aclrtCreateStream(&stream), ACL_SUCCESS, SY_FAILED);

      DvppProcess* dvpp = new DvppProcess();

  	dvpp->InitResource(stream);

      int ret = hp_init(&handle, param);

      if (ret == 0) {

          cout << "init success " << endl;

  

     		std::vector<std::string> fileList;

  

          getAllNm(img_file_path,fileList);

          if (fileList.empty()) throw std::logic_error("No suitable images were found");

  

          for (auto & file : fileList) {

              string filename = img_file_path + file;

              cout << "img path: " << filename << endl;

             

              const int batchsize = 1;

  

              Mat cvImg = imread(filename.c_str());

              sy_img imgs[batchsize];

              

              ImageData src[batchsize], dvpp_data[batchsize];

              for (int b = 0; b < batchsize; b++) {

                  Utils::ReadImageFile(src[b], filename); //将二进制图像读入内存,并读取宽高信息

                  ACL_CALL(dvpp->CvtJpegToYuv420sp(dvpp_data[b], src[b]), SY_SUCCESS, SY_FAILED); //解码

                  imgs[b].w_ = dvpp_data[b].width;

                  imgs[b].h_ = dvpp_data[b].height;

                  imgs[b].data_ = dvpp_data[b].data.get();

              }

             

              hp_analysis_res * results = new hp_analysis_res[batchsize];

              int ret = hp_batch(handle, imgs, batchsize, results);

              if (SY_SUCCESS != ret) {

                  printf("HumanCarParse process failed!");

                  return SY_FAILED;

              }

              

              for(int batchIdx = 0;batchIdx<batchsize;batchIdx++) { 

                  for (int i = 0; i < HP_ATTRI_INDEX_SIZE; i++) {   

                      printf("hp index:%d,confidence:%f\n",results[batchIdx].res_objs[i].res_index,results[batchIdx].res_objs[i].res_prob);

                  }

              }

  

              if (results) {

                  delete[] results;

                  results = NULL;

              }

  

          }

      }

  

      hp_release(&handle);

      aclrtDestroyContext(ctx);

      aclrtResetDevice(param.devId);

      aclFinalize();

  

      return 0;

  }