U
    hj                     @  sb   d dl mZ d dlmZ d dlZd dlZd dlmZ d dl	m
Z
mZmZ dgZG dd deZdS )    )annotations)AnyN)BasicTransform)MONO_CHANNEL_DIMENSIONSNUM_MULTI_CHANNEL_DIMENSIONSTargets
ToTensorV2c                      s   e Zd ZdZejejfZd dddd fd	d
Ze	ddddZ
ddddddZddddddZddddddZddddZ  ZS )!r   a  Converts images/masks to PyTorch Tensors, inheriting from BasicTransform. Supports images in numpy `HWC` format
    and converts them to PyTorch `CHW` format. If the image is in `HW` format, it will be converted to PyTorch `HW`.

    Attributes:
        transpose_mask (bool): If True, transposes 3D input mask dimensions from `[height, width, num_channels]` to
            `[num_channels, height, width]`.
        always_apply (bool): Deprecated. Default: None.
        p (float): Probability of applying the transform. Default: 1.0.

    F      ?Nboolfloatzbool | None)transpose_maskpalways_applyc                   s   t  j||d || _d S )N)r   r   )super__init__r   )selfr   r   r   	__class__ E/tmp/pip-unpacked-wheel-e8onvpoz/albumentations/pytorch/transforms.pyr      s    zToTensorV2.__init__zdict[str, Any])returnc                 C  s   | j | j| jdS )N)imagemaskmasks)applyapply_to_maskapply_to_masksr   r   r   r   targets    s    zToTensorV2.targetsz
np.ndarrayr   ztorch.Tensor)imgparamsr   c                 K  sH   t |jdkrd}t|t |jtkr4t|d}t|dddS )N)      z7Albumentations only supports images in HW or HWC formatr!   r      )	lenshape
ValueErrorr   npZexpand_dimstorch
from_numpy	transpose)r   r   r    msgr   r   r   r   $   s    zToTensorV2.apply)r   r    r   c                 K  s(   | j r|jtkr|ddd}t|S )Nr!   r   r#   )r   ndimr   r*   r(   r)   )r   r   r    r   r   r   r   .   s    zToTensorV2.apply_to_maskzlist[np.ndarray]zlist[torch.Tensor])r   r    r   c                   s    fdd|D S )Nc                   s   g | ]}j |f qS r   )r   ).0r   r    r   r   r   
<listcomp>4   s     z-ToTensorV2.apply_to_masks.<locals>.<listcomp>r   )r   r   r    r   r.   r   r   3   s    zToTensorV2.apply_to_masksztuple[str, ...]c                 C  s   dS )N)r   r   r   r   r   r   get_transform_init_args_names6   s    z(ToTensorV2.get_transform_init_args_names)Fr	   N)__name__
__module____qualname____doc__r   ZIMAGEMASKZ_targetsr   propertyr   r   r   r   r0   __classcell__r   r   r   r   r      s   
)
__future__r   typingr   Znumpyr'   r(   Z(albumentations.core.transforms_interfacer   Zalbumentations.core.typesr   r   r   __all__r   r   r   r   r   <module>   s   