Spaces:
Runtime error
Runtime error
| import torch | |
| import comfy.model_management | |
| from kornia.morphology import dilation, erosion, opening, closing, gradient, top_hat, bottom_hat | |
| class Morphology: | |
| def INPUT_TYPES(s): | |
| return {"required": {"image": ("IMAGE",), | |
| "operation": (["erode", "dilate", "open", "close", "gradient", "bottom_hat", "top_hat"],), | |
| "kernel_size": ("INT", {"default": 3, "min": 3, "max": 999, "step": 1}), | |
| }} | |
| RETURN_TYPES = ("IMAGE",) | |
| FUNCTION = "process" | |
| CATEGORY = "image/postprocessing" | |
| def process(self, image, operation, kernel_size): | |
| device = comfy.model_management.get_torch_device() | |
| kernel = torch.ones(kernel_size, kernel_size, device=device) | |
| image_k = image.to(device).movedim(-1, 1) | |
| if operation == "erode": | |
| output = erosion(image_k, kernel) | |
| elif operation == "dilate": | |
| output = dilation(image_k, kernel) | |
| elif operation == "open": | |
| output = opening(image_k, kernel) | |
| elif operation == "close": | |
| output = closing(image_k, kernel) | |
| elif operation == "gradient": | |
| output = gradient(image_k, kernel) | |
| elif operation == "top_hat": | |
| output = top_hat(image_k, kernel) | |
| elif operation == "bottom_hat": | |
| output = bottom_hat(image_k, kernel) | |
| else: | |
| raise ValueError(f"Invalid operation {operation} for morphology. Must be one of 'erode', 'dilate', 'open', 'close', 'gradient', 'tophat', 'bottomhat'") | |
| img_out = output.to(comfy.model_management.intermediate_device()).movedim(1, -1) | |
| return (img_out,) | |
| NODE_CLASS_MAPPINGS = { | |
| "Morphology": Morphology, | |
| } | |
| NODE_DISPLAY_NAME_MAPPINGS = { | |
| "Morphology": "ImageMorphology", | |
| } |