def update_poses(self): if self.pose_input_frame is None: return datum = self.pose_estimator.grab_pose(self.pose_input_frame) self.pose_input_frame = None num_poses = len( datum.poseKeypoints) if datum.poseKeypoints.ndim > 0 else 0 self.logger.debug("Number of poses detected: %d", num_poses) if num_poses == 0: if len(self.players) > 0: self.reset_game() return new_players = set() for pose in datum.poseKeypoints: player = self.find_nearest_player(pose) if not player: player = Player(self.space) player.update_pose(pose, self.dt) new_players.add(player) old_players = self.players - new_players self.logger.debug("Removing " + str(len(old_players)) + " players") for old_player in old_players: old_player.destroy() self.logger.debug("Keeping/adding " + str(len(new_players))) self.players = new_players self.output_frame = convert_array_to_pygame_layout(datum.cvOutputData)