1 #include "track_link.h"
2 #include "objects_update.h"
3 #include "objects_tracker.h"
4 #define MAX_OUTPUT 100
5
6 object_T object_input[MAX_OUTPUT];
7 object_T object_output[MAX_OUTPUT];
8
create_tracker()9 long create_tracker() {
10 OdtDetector *object = new OdtDetector();
11 return (long)object;
12 }
13
destroy_tracker(long handle)14 void destroy_tracker(long handle) {
15 delete((OdtDetector*)handle);
16 }
17
track(long handle,int maxTrackLifetime,int track_input_num,float * c_track_input_locations,int * c_track_input_class,float * c_track_input_score,int * c_track_output_num,float * c_track_output_locations,int * c_track_output_class,float * c_track_output_score,int * c_track_output_id,int width,int height)18 void track(long handle, int maxTrackLifetime,
19 int track_input_num, float * c_track_input_locations, int * c_track_input_class, float * c_track_input_score,
20 int * c_track_output_num, float * c_track_output_locations, int * c_track_output_class, float * c_track_output_score,
21 int * c_track_output_id, int width, int height){
22
23 OdtDetector *object = (OdtDetector*)handle;
24
25 for (int i = 0; i < track_input_num; i++) {
26 object_input[i].r.x = (int)c_track_input_locations[i*4 +0];
27 object_input[i].r.y = (int)c_track_input_locations[i*4 +1];
28 object_input[i].r.width = (int)(c_track_input_locations[i*4 +2] -c_track_input_locations[i*4 +0]);
29 object_input[i].r.height = (int)(c_track_input_locations[i*4 +3] -c_track_input_locations[i*4 +1]);
30 object_input[i].score = c_track_input_score[i];
31 object_input[i].obj_class = c_track_input_class[i];
32 //LOGI("%d input P: %f\n", i, object_input[i].score);
33 }
34
35 object->update(maxTrackLifetime, track_input_num, object_input, c_track_output_num, object_output, width, height);
36
37 for (int i = 0; i < *c_track_output_num; i++) {
38 c_track_output_locations[i*4 +0] = (float)object_output[i].r.x;
39 c_track_output_locations[i*4 +1] = (float)object_output[i].r.y;
40 c_track_output_locations[i*4 +2] = (float)(object_output[i].r.x +object_output[i].r.width);
41 c_track_output_locations[i*4 +3] = (float)(object_output[i].r.y +object_output[i].r.height);
42 c_track_output_class[i] = object_output[i].obj_class;
43 c_track_output_score[i] = object_output[i].score;
44 // LOGI("output P: %f\n", c_track_output_score[i]);
45 c_track_output_id[i] = object_output[i].id;
46 }
47
48 //LOGI("handle=%ld tracker input_num=%d output_num=%d maxTrackLifetime=%d width=%d height=%d\n",
49 // handle, track_input_num, *c_track_output_num, maxTrackLifetime, width, height);
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