@@ -196,8 +196,8 @@ def get_dick_pos(self, max_distance_frame_num: int) -> dict:
196196 else { 'w' : center_line [0 ], 'm' : center_line [1 ] }
197197
198198 # TODO: dividor is an hyperparameter
199- dx = (dick_pos ['m' ][0 ] - dick_pos ['w' ][0 ]) / 3
200- dy = (dick_pos ['m' ][1 ] - dick_pos ['w' ][1 ]) / 3
199+ dx = (dick_pos ['m' ][0 ] - dick_pos ['w' ][0 ]) / 2.5
200+ dy = (dick_pos ['m' ][1 ] - dick_pos ['w' ][1 ]) / 2.5
201201 return {
202202 'w' : (self .clamp (dick_pos ['w' ][0 ] - dx , 0 , frame_w - 1 ), self .clamp (dick_pos ['w' ][1 ] - dy , 0 , frame_h - 1 )),
203203 'm' : (self .clamp (dick_pos ['m' ][0 ] + dx , 0 , frame_w - 1 ), self .clamp (dick_pos ['m' ][1 ] + dy , 0 , frame_h - 1 ))
@@ -221,6 +221,9 @@ def calculate_score(self, bboxes) -> None:
221221 }
222222
223223 dick_pos = None
224+ tracking_points_with_offset = {}
225+ for tracker_type in bboxes .keys ():
226+ tracking_points_with_offset [tracker_type ] = {}
224227
225228 self .logger .info ("Calculate score for %d Tracker(s)" , self .params .number_of_trackers )
226229 for tracker_number in range (self .params .number_of_trackers ):
@@ -253,6 +256,20 @@ def calculate_score(self, bboxes) -> None:
253256 roll_men_offset = (dick_pos ['m' ][0 ] - men_center [dick_pos ['idx' ]][0 ], dick_pos ['m' ][1 ] - men_center [dick_pos ['idx' ]][1 ])
254257 self .logger .info ('use roll offset w = %s, m = %s' , str (roll_woman_offset ), str (roll_men_offset ))
255258
259+ tracking_points_with_offset ['Woman' ][tracker_number ] = [
260+ (
261+ int (woman_center [i ][0 ] + roll_woman_offset [0 ]),
262+ int (woman_center [i ][1 ] + roll_woman_offset [1 ])
263+ ) for i in range ( min (( len (men_center ), len (woman_center ) )) )
264+ ]
265+
266+ tracking_points_with_offset ['Men' ][tracker_number ] = [
267+ (
268+ int (men_center [i ][0 ] + roll_men_offset [0 ]),
269+ int (men_center [i ][1 ] + roll_men_offset [1 ])
270+ ) for i in range ( min (( len (men_center ), len (woman_center ) )) )
271+ ]
272+
256273 for i in range ( min (( len (men_center ), len (woman_center ) )) ):
257274
258275 if False :
@@ -288,6 +305,11 @@ def calculate_score(self, bboxes) -> None:
288305 score ['x' ][tracker_number ] = np .array ([w [0 ] - min_woman_x for w in woman_center ])
289306 score ['y' ][tracker_number ] = np .array ([max_woman_y - w [1 ] for w in woman_center ])
290307
308+ tracking_points_with_offset ['Woman' ][tracker_number ] = woman_center
309+
310+
311+ self .tracking_points = tracking_points_with_offset # save so we can use the later for visu
312+
291313 self .logger .info ("Merge Scores" )
292314
293315 pool , queue = {}, {}
@@ -732,28 +754,10 @@ def tracking(self) -> str:
732754 self .logger .info (status )
733755 self .logger .info ('Interpolate tracking boxes' )
734756 interpolated_bboxes = self .interpolate_bboxes (bboxes )
735- self .tracking_points = self .determine_tracking_points (interpolated_bboxes )
736757 self .calculate_score (interpolated_bboxes )
737758 return status
738759
739760
740- def determine_tracking_points (self , interpolated_bboxes : dict ) -> dict :
741- """ Determine the final tracking points
742-
743- Args:
744- interpolate_bboxes (dict): interpolate bboxes from all trackers
745-
746- Returns:
747- dict: final tracking points
748- """
749- result = {}
750- for tracker_type in interpolated_bboxes .keys ():
751- result [tracker_type ] = {}
752- for tracker_number in interpolated_bboxes [tracker_type ].keys ():
753- result [tracker_type ][tracker_number ] = [self .get_center (item ) for item in interpolated_bboxes [tracker_type ][tracker_number ]]
754-
755- return result
756-
757761
758762 def get_tracking_points_by_frame_number (self , relative_frame_number : int ) -> list :
759763 """ Get tracking points by frame number
0 commit comments