Beispiel #1
0
    def load_image(self,
                   name: str,
                   size: Optional[Tuple[int, int]] = None,
                   relative_center: Optional[Tuple[float, float]] = None,
                   center: Optional[Tuple[int, int]] = None):

        image_dict = self.config.get("resources", name)

        # check that image has path
        if 'path' not in image_dict:
            err_msg = 'image has no path specified'
            logger.error(err_msg)
            raise ConfigError(err_msg)

        image_path = Configurator.reconstruct_path(self.resource_path,
                                                   image_dict['path'])
        logger.debug("loading image {}".format(image_path))
        img = cv2.imread(image_path, -1)

        # resize if size is not None or size specified in config
        # also ensure size exists in image_dict
        if size:
            img = cv2.resize(img, size)
            image_dict["size"] = [0, 0]
            image_dict["size"][0], image_dict["size"][1] = size
        elif 'size' in image_dict:
            img = cv2.resize(img,
                             (image_dict['size'][0], image_dict['size'][1]))
        else:
            image_dict["size"] = [0, 0]
            image_dict["size"][0] = img.shape[1]
            image_dict["size"][1] = img.shape[0]

        # overwrite center if defined in params
        if relative_center:
            rel_x, rel_y = relative_center
            image_dict['center'] = [
                int(rel_x * image_dict['size'][0]),
                int(rel_y * image_dict['size'][1])
            ]
        if center:
            image_dict['center'] = center

        img = ImageHandler.ensure_alpha_channel(img)

        # add image to dictionary and return
        image_dict['image'] = img
        return image_dict
Beispiel #2
0
    def __init__(self, config: Configurator):

        self.config = config
        self.resource_path = Configurator.reconstruct_path(
            os.getcwd(), self.config.get("resources", "relative_path"))