Exemple #1
0
 def load_homography(self,
                     storage=None,
                     perspective=None,
                     image=None,
                     file=None):
     """
     Args:
         storage (tuple): ((x, y), [upper-left, upper-right, bottom-left, bottom-right])
         perspective (Perspective):
         image (np.ndarray):
         file (str): File path of image
     """
     if storage is not None:
         self.find_homography(*storage)
     elif perspective is not None:
         hori = perspective.horizontal[0].add(perspective.horizontal[-1])
         vert = perspective.vertical[0].add(perspective.vertical[-1])
         src_pts = hori.cross(vert).points
         x = len(perspective.vertical) - 1
         y = len(perspective.horizontal) - 1
         self.find_homography(size=(x, y), src_pts=src_pts)
     elif image is not None:
         perspective_ = Perspective(self.config)
         perspective_.load(image)
         self.load_homography(perspective=perspective_)
     elif file is not None:
         image_ = np.array(Image.open(file).convert('RGB'))
         perspective_ = Perspective(self.config)
         perspective_.load(image_)
         self.load_homography(perspective=perspective_)
     else:
         raise MapDetectionError(
             'No data feed to load_homography, please input at least one.')
Exemple #2
0
class MapDetector:
    """
    Map detector wrapper
    """
    image: np.ndarray
    config: AzurLaneConfig

    left_edge: bool
    right_edge: bool
    lower_edge: bool
    upper_edge: bool

    generate: callable

    def __init__(self, config):
        """
        Args:
            config (AzurLaneConfig):
        """
        self.config = config
        self.backend = None
        self.detector_set_backend()

    def detector_set_backend(self, name=''):
        """
        Args:
            name (str): 'homography' or 'perspective'
        """
        if not name:
            name = self.config.DETECTION_BACKEND

        if name == 'homography':
            self.backend = Homography(config=self.config)
        else:
            self.backend = Perspective(config=self.config)

    def load(self, image):
        """
        Args:
            image: Shape (720, 1280, 3)
        """
        self.backend.load(image)

        self.left_edge = bool(self.backend.left_edge)
        self.right_edge = bool(self.backend.right_edge)
        self.lower_edge = bool(self.backend.lower_edge)
        self.upper_edge = bool(self.backend.upper_edge)
        self.generate = self.backend.generate