python-numpy-image-manipulation / py_image_manipulation / util.py
util.py
Raw
from py_image_manipulation.effect import ImageEffect
import functools
import numpy as np
from typing import Type


@functools.lru_cache(maxsize=None)
def get_filters() -> dict:
    return {x.__name__: x for x in ImageEffect.__subclasses__()}


def get_filter(name: str) -> Type[ImageEffect]:
    return get_filters()[name]


def apply_filter(name: str, image: np.ndarray) -> np.ndarray:
    filter = get_filter(name)
    return filter.apply(image)