Exemplo n.º 1
0
    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)