Blame view

src/demo/demo.cpp 6.92 KB
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
1
2
3
4
5
6
7
  #include "../ai_platform/stl_aiplatform.h"
  #include <chrono>
  #include <thread>
  #include <stdio.h>
  #include <string.h>
  #include <stdlib.h>
  #include <unistd.h>
ffd1e48a   Hu Chunming   实现结果回调,完成第一版
8
  #include <iostream>
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
9
10
11
  
  using namespace std;
  
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
12
13
14
15
16
17
18
  
  static long long get_cur_time(){
      chrono::time_point<chrono::system_clock, chrono::milliseconds> tpMicro
          = chrono::time_point_cast<chrono::milliseconds>(chrono::system_clock::now());
      return tpMicro.time_since_epoch().count();
  }
  
881ac79d   Hu Chunming   代码调通,结果正常输出
19
20
  string get_ipc_url(int gi){
    string ipc_url = "/data/share/data/Street.uvf";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
21
22
    switch(gi){
      case 0:
881ac79d   Hu Chunming   代码调通,结果正常输出
23
        ipc_url = "rtsp://admin:admin@123456@192.168.60.176:554/cam/realmonitor?channel=1&subtype=0";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
24
25
        break;
      case 1:
881ac79d   Hu Chunming   代码调通,结果正常输出
26
        ipc_url = "rtsp://122.97.218.170:8604/openUrl/V5nXRHa?params=eyJwcm90b2NhbCI6InJ0c3AiLCJjbGllbnRUeXBlIjoib3Blbl9hcGkiLCJleHByaWVUaW1lIjotMSwicHJvdG9jb2wiOiJydHNwIiwiZXhwaXJlVGltZSI6MzAwLCJlbmFibGVNR0MiOnRydWUsImV4cGFuZCI6InN0YW5kYXJkPXJ0c3Amc3RyZWFtZm9ybT1ydHAiLCJhIjoiMTBjZjM4N2JjY2Y5NDg3YzhjNWYzNjE2M2ViMWUyNTJ8MXwwfDEiLCJ0IjoxfQ==";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
27
28
        break;
      case 2:
881ac79d   Hu Chunming   代码调通,结果正常输出
29
        ipc_url = "rtsp://admin:ad123456@192.168.10.166:554/cam/realmonitor?channel=1&subtype=0";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
30
31
        break;
      case 3:
881ac79d   Hu Chunming   代码调通,结果正常输出
32
33
        ipc_url = "rtsp://122.97.218.170:8604/openUrl/LBBYTra?params=eyJwcm90b2NhbCI6InJ0c3AiLCJjbGllbnRUeXBlIjoib3Blbl9hcGkiLCJleHByaWVUaW1lIjotMSwicHJvdG9jb2wiOiJydHNwIiwiZXhwaXJlVGltZSI6MzAwLCJlbmFibGVNR0MiOnRydWUsImV4cGFuZCI6InN0YW5kYXJkPXJ0c3Amc3RyZWFtZm9ybT1ydHAiLCJhIjoiOTgzYjRjMmUxMThlNGU1OTlkYThmMTI3NTkyMGViODV8MXwwfDEiLCJ0IjoxfQ==";
        // ipc_url = "rtsp://122.97.218.170:8604/openUrl/V5nXRHa?params=eyJwcm90b2NhbCI6InJ0c3AiLCJjbGllbnRUeXBlIjoib3Blbl9hcGkiLCJleHByaWVUaW1lIjotMSwicHJvdG9jb2wiOiJydHNwIiwiZXhwaXJlVGltZSI6MzAwLCJlbmFibGVNR0MiOnRydWUsImV4cGFuZCI6InN0YW5kYXJkPXJ0c3Amc3RyZWFtZm9ybT1ydHAiLCJhIjoiMTBjZjM4N2JjY2Y5NDg3YzhjNWYzNjE2M2ViMWUyNTJ8MXwwfDEiLCJ0IjoxfQ==";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
34
35
        break;
      case 4:
881ac79d   Hu Chunming   代码调通,结果正常输出
36
        ipc_url = "/data/share/data/Street.uvf";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
37
38
        break;
      case 5:
881ac79d   Hu Chunming   代码调通,结果正常输出
39
        ipc_url = "/data/share/data/公安局老桥头_CVR15F89410_1465819864_1B.mp4";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
40
41
        break;
      case 6:
881ac79d   Hu Chunming   代码调通,结果正常输出
42
        ipc_url = "/data/share/data/不带头盔2.mp4";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
43
44
        break;
      case 7:
881ac79d   Hu Chunming   代码调通,结果正常输出
45
        ipc_url = "/data/share/data/hczr1.mp4";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
46
47
        break;
      case 8:
881ac79d   Hu Chunming   代码调通,结果正常输出
48
        ipc_url = "/data/share/data/燕高路口高点_CVR_2015-12-30_09-00-00_2015-12-30.mp4";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
49
50
        break;
      case 9:
881ac79d   Hu Chunming   代码调通,结果正常输出
51
52
        // ipc_url = "/opt/share/data/1-00000002d55_h265.mp4";
        ipc_url = "/data/share/data/duan1.mp4";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
53
54
        break;
      case 10:
881ac79d   Hu Chunming   代码调通,结果正常输出
55
        ipc_url = "/data/share/data/gs1-00000001.mp4";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
56
57
        break;
      case 11:
881ac79d   Hu Chunming   代码调通,结果正常输出
58
        ipc_url = "/data/share/data/98.mp4";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
59
60
        break;
      case 12:
881ac79d   Hu Chunming   代码调通,结果正常输出
61
        ipc_url = "/data/share/data/AV_12345_1_20230108110849847_D_1673147329847729.mp4";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
62
63
        break;
      case 13:
881ac79d   Hu Chunming   代码调通,结果正常输出
64
        ipc_url = "/data/share/data/nx_1-00000002.mp4";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
65
66
        break;
      case 14:
881ac79d   Hu Chunming   代码调通,结果正常输出
67
        ipc_url = "/data/share/data/nx1-0000001.mp4";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
68
69
        break;
      case 15:
881ac79d   Hu Chunming   代码调通,结果正常输出
70
        ipc_url = "/data/share/data/nx1-00000002.mp4";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
71
72
        break;
      case 16:
881ac79d   Hu Chunming   代码调通,结果正常输出
73
        ipc_url = "/data/share/data/Street.uvf";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
74
75
        break;
      case 17:
881ac79d   Hu Chunming   代码调通,结果正常输出
76
        ipc_url = "/data/share/data/xiancun.mp4";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
77
78
        break;
      case 18:
881ac79d   Hu Chunming   代码调通,结果正常输出
79
        ipc_url = "rtsp://192.168.60.146:8554/w_1_out";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
80
81
        break;
      case 19:
881ac79d   Hu Chunming   代码调通,结果正常输出
82
        ipc_url = "/data/share/data/42_44.avi";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
83
84
        break;
      case 20:
881ac79d   Hu Chunming   代码调通,结果正常输出
85
        ipc_url = "/data/share/data/37_70.avi";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
86
87
        break;
      case 21:
881ac79d   Hu Chunming   代码调通,结果正常输出
88
        ipc_url = "/data/share/data/192_25.avi";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
89
90
        break;
      case 22:
881ac79d   Hu Chunming   代码调通,结果正常输出
91
        ipc_url = "/data/share/data/31_4.avi";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
92
93
        break;
      case 23:
881ac79d   Hu Chunming   代码调通,结果正常输出
94
        ipc_url = "/data/share/data/146_192.avi";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
95
96
        break;
      case 24:
881ac79d   Hu Chunming   代码调通,结果正常输出
97
        ipc_url = "/data/share/data/146_187.mp4";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
98
99
100
        break;
      case 25:
        // 公安内网
881ac79d   Hu Chunming   代码调通,结果正常输出
101
        ipc_url = "rtsp://192.168.51.200:8554/320202202308231001001002";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
102
103
104
        break;
      case 26:
        // FFmpeg生成的解码错误数据流
881ac79d   Hu Chunming   代码调通,结果正常输出
105
        ipc_url = "rtsp://192.168.10.4:8554/street";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
106
107
        break;
      case 27:
881ac79d   Hu Chunming   代码调通,结果正常输出
108
        ipc_url = "/data/share/data/Street_4k_265.mp4";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
109
110
        break;
      case 28:
881ac79d   Hu Chunming   代码调通,结果正常输出
111
        ipc_url = "http://192.168.60.179:10016/公安局老桥头_CVR15F89410_1465819864_1B.mp4";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
112
113
        break;
      case 29:
881ac79d   Hu Chunming   代码调通,结果正常输出
114
        ipc_url = "http://192.168.60.179:10016/不带头盔2.mp4";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
115
116
        break;
      case 30:
881ac79d   Hu Chunming   代码调通,结果正常输出
117
        ipc_url = "/data/share/data/149_45.avi";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
118
119
        break;
      case 31:
881ac79d   Hu Chunming   代码调通,结果正常输出
120
        ipc_url = "/data/share/data/146_88.avi";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
121
122
        break;
      case 32:
881ac79d   Hu Chunming   代码调通,结果正常输出
123
        ipc_url = "/data/share/data/141_74.avi";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
124
125
        break;
      default:
881ac79d   Hu Chunming   代码调通,结果正常输出
126
        ipc_url = "/data/share/data/Street.uvf";
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
127
128
        break;
    }
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
129
  
881ac79d   Hu Chunming   代码调通,结果正常输出
130
    return ipc_url;
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
131
132
  }
  
881ac79d   Hu Chunming   代码调通,结果正常输出
133
  static int nTaskId = 0;
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
134
  
881ac79d   Hu Chunming   代码调通,结果正常输出
135
  string createTask(void *handle, int gi, bool bFlag = true){
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
136
137
    task_param tparam;
  
881ac79d   Hu Chunming   代码调通,结果正常输出
138
    tparam.ipc_url = get_ipc_url(gi);
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
139
140
141
142
  
    if (bFlag){
      nTaskId = gi;
    }
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
143
144
    std::string task_id_str = "test_task_id_" + std::to_string(nTaskId);
    tparam.task_id = task_id_str.c_str();
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
145
146
    nTaskId++;
  
881ac79d   Hu Chunming   代码调通,结果正常输出
147
148
    tparam.result_folder_little = "./res";         //目标快照抠图保存地址
  	tparam.result_folder = "./res";                //目标快照大图保存地址
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
149
150
151
152
153
154
  
    const int result_code = add_task(handle, tparam);
    if (result_code != 0)
      printf("[Error]: ");
    printf("--- task_id: %s result code: %d\n", tparam.task_id, result_code);
  
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
155
156
157
    return task_id_str;
  }
  
ffd1e48a   Hu Chunming   实现结果回调,完成第一版
158
159
  void show_result(ObjectData obj)
  {
e721ea0f   Hu Chunming   删除无用的三方库
160
161
162
163
164
165
166
167
168
169
170
171
172
173
    cout << obj.task_id << endl;
    cout << obj.task_frame_count << endl;
    printf("%d %d (%d,%d,%d,%d) %lf \n", obj.index, obj.object_id, obj.left, obj.top, obj.right, obj.bottom, obj.confidence);
  
    if (obj.index == 0)
    {// person
      /* code */
    } 
    else if (obj.index >= 4 && obj.index <= 8)
    {// vehicle
      /* code */
    }
    
    
ffd1e48a   Hu Chunming   实现结果回调,完成第一版
174
  }
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
175
176
177
178
  
  void test_gpu(int gpuID){
      tsl_aiplatform_param vptParam;
      vptParam.gpuid = gpuID;
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
179
180
181
182
183
184
185
186
      vptParam.models_dir = ".";
  
      vptParam.log_days = 1;
      vptParam.log_level = AI_LOG_LEVEL_TRACE;
      // vptParam.log_level = AI_LOG_LEVEL_DEBUG;
      vptParam.log_mem = 64 * 1024 * 1024; // 64MB.
      vptParam.log_path = "logs/main.log";
  
ffd1e48a   Hu Chunming   实现结果回调,完成第一版
187
188
      vptParam.result_cbk = show_result;
  
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
189
190
191
192
193
194
195
196
197
      void *handle;
      int flag = tsl_aiplatform_init(&handle, vptParam);
      if (0 != flag) {
          printf("Init Failed! Error Code: %d\n", flag);
          return;
      } else {
          printf("Init Success\n");
      }
  
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
198
199
200
201
202
203
204
205
    // createTask(handle, algor_vec2, 19, false);
    // createTask(handle, algor_vec2, 20, false);
    // createTask(handle, algor_vec2, 21, false);
    // createTask(handle, algor_vec2, 22, false);
    // createTask(handle, algor_vec2, 23, false);
    // createTask(handle, algor_vec2, 24, false);
    // createTask(handle, algor_vec2, 30, false);
    // createTask(handle, algor_vec2, 31, false);
881ac79d   Hu Chunming   代码调通,结果正常输出
206
    createTask(handle, 4, false);
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
207
208
209
210
211
212
  
      while (getchar() != 'q');
  
      tsl_aiplatform_release(&handle);
  }
  
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
  int main(int argc, char *argv[]) {
      printf("new test\n");
  
      // if (argc < 4) {
      //   fprintf(stderr, "./xxx 0 2 10 1 ## [start_ai_id, end_ai_id) repeat_num gpu_id\n");
      //   return -1;
      // }
  
      // //! load params.
      // int start_id = atoi(argv[1]);
      // int end_id = atoi(argv[2]);
      // int repeat_num = atoi(argv[3]);
      // int gpuID = atoi(argv[4]);
  
      test_gpu(0);
      // test_gpu(1);
      // test_gpu(2);
      // test_gpu(3);
  
6fdcb6a5   Hu Chunming   初次提交,代码大体完成编写,完善中
232
233
234
235
236
  
      printf("Done.\n"); 
  
      return 0;
  }