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