#From https://github.com/kornia/kornia import math import torch import torch.nn.functional as F import comfy.model_management from kornia.filters import canny class Canny: @classmethod def INPUT_TYPES(s): return {"required": {"image": ("IMAGE",), "low_threshold": ("FLOAT", {"default": 0.4, "min": 0.01, "max": 0.99, "step": 0.01}), "high_threshold": ("FLOAT", {"default": 0.8, "min": 0.01, "max": 0.99, "step": 0.01}) }} RETURN_TYPES = ("IMAGE",) FUNCTION = "detect_edge" CATEGORY = "image/preprocessors" def detect_edge(self, image, low_threshold, high_threshold): output = canny(image.to(comfy.model_management.get_torch_device()).movedim(-1, 1), low_threshold, high_threshold) img_out = output[1].to(comfy.model_management.intermediate_device()).repeat(1, 3, 1, 1).movedim(1, -1) return (img_out,) NODE_CLASS_MAPPINGS = { "Canny": Canny, }