class GameAnalyzer: def __init__(self, table, camera): self.table = table self.camera = camera self.frames_in_flight = 120 self.table_tracker = TableTracker(table, camera, TableReferenceFrame()) self.rectifier = Rectifier(table, margin=0.10, camera=camera, resolution=120) self.background_analyzer = BackgroundAnalyzer(table, self.rectifier) self.team_foosmen_analyzer = TeamFoosmenAnalyzer(table, self.rectifier) self.ball_analyzer = BallAnalyzer(table, self.rectifier) self.rod_analyzer = [RodAnalyzer(table, rod, self.rectifier) for rod in table.rods] def analyze(self, data): self.table_tracker.locate_table(data) self.table_tracker.settle_table(data) self.table_tracker.compute_camera_transform(data) self.rectifier.rectify(data.frames) self.background_analyzer.estimate_color(data) self.background_analyzer.analyze_color(data) for i, team in enumerate(self.table.teams): self.team_foosmen_analyzer.initialize_model(team, data) self.team_foosmen_analyzer.analyze_color(team, data) self.team_foosmen_analyzer.compute_visible_llr(team, data) self.team_foosmen_analyzer.compute_location_llr(team, data) for i, rod in enumerate(self.table.rods): analyzer = self.rod_analyzer[i] for j, foosman in enumerate(rod.foosmen): foosman_analyzer = analyzer.foosman_analyzer[j] foosman_analyzer.compute_shift_llr(data) analyzer.compute_shift_llr(data) self.ball_analyzer.analyze_color(data) self.ball_analyzer.compute_visible_llr(data) self.ball_analyzer.compute_location_llr(data)
def __init__(self, table, camera): self.table = table self.camera = camera self.frames_in_flight = 120 self.table_tracker = TableTracker(table, camera, TableReferenceFrame()) self.rectifier = Rectifier(table, margin=0.10, camera=camera, resolution=120) self.background_analyzer = BackgroundAnalyzer(table, self.rectifier) self.team_foosmen_analyzer = TeamFoosmenAnalyzer(table, self.rectifier) self.ball_analyzer = BallAnalyzer(table, self.rectifier) self.rod_analyzer = [RodAnalyzer(table, rod, self.rectifier) for rod in table.rods]
bg_sub = Bg_subtractor() # pedestrians detection model ped_det = Obj_detector() # ped_tr = Sort() # performance statistics stats = Statistics("../groundtruth.txt") cap = cv2.VideoCapture('../pedestrians.mp4') width = int(cap.get(3)) height = int(cap.get(4)) # rectifying model rect = Rectifier(width, height, shift=50, up=True, central_zoom=80) # create a named windows and move it cv2.namedWindow('video') cv2.moveWindow('video', 70, 30) next_frame, frame = cap.read() play = True # pedestrians tracking model ped_tr = Obj_tracker(width, height) def drawBboxes(bboxes, frame, color=(0, 0, 255), ids=None): if ids is not None and len(ids) > 0: for (bbox, id) in zip(bboxes, ids):