o
    oi                     @   s<   d dl mZmZ d dlmZ d dlmZ G dd deZdS )    )ModuleTensor)KORNIA_CHECK_SHAPE)DexiNedc                       sj   e Zd ZdZd fddZdeddfddZd	edefd
dZdedefddZ	d	edefddZ
  ZS )EdgeDetectoran  Detect edges in a given image using a CNN.

    By default, it uses the method described in :cite:`xsoria2020dexined`.

    Return:
        A tensor of shape :math:`(B,1,H,W)`.

    Example:
        >>> img = torch.rand(1, 3, 320, 320)
        >>> detect = EdgeDetector()
        >>> out = detect(img)
        >>> out.shape
        torch.Size([1, 1, 320, 320])

    returnNc                    s   t    tdd| _d S )NT)
pretrained)super__init__r   model)self	__class__ Q/home/ubuntu/.local/lib/python3.10/site-packages/kornia/contrib/edge_detection.pyr
   (   s   
zEdgeDetector.__init__	path_filec                 C   s   | j | d S N)r   load_from_file)r   r   r   r   r   load,   s   zEdgeDetector.loadimagec                 C      |S r   r   )r   r   r   r   r   
preprocess/      zEdgeDetector.preprocessdatac                 C   r   r   r   )r   r   r   r   r   postprocess2   r   zEdgeDetector.postprocessc                 C   s,   t |g d | |}| |}| |S )N)B3HW)r   r   r   r   )r   r   imgoutr   r   r   forward5   s   


zEdgeDetector.forward)r   N)__name__
__module____qualname____doc__r
   strr   r   r   r   r!   __classcell__r   r   r   r   r      s    r   N)kornia.corer   r   kornia.core.checkr   kornia.filters.dexinedr   r   r   r   r   r   <module>   s   