Source code for pierogis.ingredients.crop

from typing import Union

import numpy as np

from .ingredient import Ingredient
from .seasonings.cartography import Direction
from .seasonings.rectangle import Rectangle


[docs]class Crop(Ingredient): """ crop starting from an origin and selecting an area both defined as a compass direction """ X = 0 Y = 0 x: int y: int height: int width: int aspect: float origin: Direction
[docs] def prep( self, x: int = X, y: int = Y, height: int = None, width: int = None, aspect: float = None, origin: Union[str, Direction] = Rectangle.ORIGIN, **kwargs ) -> None: """ :param x: 0 = left :param y: 0 = bottom :param width: width in pixels :param height: height in pixels :param aspect: aspect ratio to fill missing height or width (width/height, 1 means square) :param origin: location of origin for direction of crop select """ self.x = x self.y = y self.height = height self.width = width self.aspect = aspect self.origin = origin
[docs] def cook(self, pixels: np.ndarray) -> np.ndarray: width = pixels.shape[0] height = pixels.shape[1] rectangle = Rectangle( width=self.width, height=self.height, x=self.x, y=self.y, aspect=self.aspect, origin=self.origin ) bottom_left, top_right = rectangle.get_corner_coordinates(width, height) cooked_pixels = pixels[ bottom_left.x: top_right.x, bottom_left.y: top_right.y ] return cooked_pixels