
    %`i]                         d dl mZmZ d dlmZ d dlmZmZ d dl	m
Z
  G d de          Z G d de          Z G d	 d
e          Z G d de          ZdS )    )AnyUnion)
tv_tensors)
functional	Transform)CLAMPING_MODE_TYPEc                        e Zd ZdZej        fZdeeej	        f         ddf fdZ
dej        deeef         dej        fdZ xZS )	ConvertBoundingBoxFormata_  Convert bounding box coordinates to the given ``format``, eg from "CXCYWH" to "XYXY".

    Args:
        format (str or tv_tensors.BoundingBoxFormat): output bounding box format.
            Possible values are defined by :class:`~torchvision.tv_tensors.BoundingBoxFormat` and
            string values match the enums, e.g. "XYXY" or "XYWH" etc.
    formatreturnNc                 V    t                                                       || _        d S N)super__init__r   )selfr   	__class__s     s/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/torchvision/transforms/v2/_meta.pyr   z!ConvertBoundingBoxFormat.__init__   s$        inptparamsc                 8    t          j        || j                  S )N)
new_format)Fconvert_bounding_box_formatr   r   r   r   s      r   	transformz"ConvertBoundingBoxFormat.transform   s    ,TdkJJJJr   )__name__
__module____qualname____doc__r   BoundingBoxes_transformed_typesr   strBoundingBoxFormatr   dictr   r   __classcell__r   s   @r   r
   r
      s          %24uS**F%FG D      Kj6 KS#X KS]Sk K K K K K K K Kr   r
   c                        e Zd ZdZd
deeef         ddf fdZej	        fZ
dej	        deeef         dej	        fd	Z xZS )ClampBoundingBoxesa   Clamp bounding boxes to their corresponding image dimensions.

    Args:
        clamping_mode: Default is "auto" which relies on the input box'
            ``clamping_mode`` attribute. Read more in :ref:`clamping_mode_tuto`
            for more details on how to use this transform.
    autoclamping_moder   Nc                 V    t                                                       || _        d S r   )r   r   r+   r   r+   r   s     r   r   zClampBoundingBoxes.__init__$   s'    *r   r   r   c                 8    t          j        || j                  S )N)r+   )r   clamp_bounding_boxesr+   r   s      r   r   zClampBoundingBoxes.transform*   s    %d$:LMMMMr   )r*   )r   r   r   r    r   r   r#   r   r   r!   r"   r%   r   r   r&   r'   s   @r   r)   r)      s         + +e,>,C&D +RV + + + + + + %24Nj6 NS#X NS]Sk N N N N N N N Nr   r)   c                   Z    e Zd ZdZej        fZdej        deee	f         dej        fdZ
dS )ClampKeyPointszClamp keypoints to their corresponding image dimensions.

    The clamping is done according to the keypoints' ``canvas_size`` meta-data.
    r   r   r   c                 *    t          j        |          S r   )r   clamp_keypointsr   s      r   r   zClampKeyPoints.transform6   s     &&&r   N)r   r   r   r    r   	KeyPointsr"   r%   r#   r   r    r   r   r1   r1   .   sc         
 %.0'j2 'DcN 'zOc ' ' ' ' ' 'r   r1   c                   t     e Zd ZdZdeddf fdZej        fZdej        de	e
ef         dej        fdZ xZS )	SetClampingModea4  Sets the ``clamping_mode`` attribute of the bounding boxes for future transforms.



    Args:
        clamping_mode: The clamping mode to set. Possible values are: "soft",
            "hard", or ``None``. Read more in :ref:`clamping_mode_tuto` for more
            details on how to use this transform.
    r+   r   Nc                     t                                                       || _        | j        dvrt          d|           d S )N)Nsofthardz.clamping_mode must be soft, hard or None, got )r   r   r+   
ValueErrorr-   s     r   r   zSetClampingMode.__init__E   sO    *%;;;]m]]^^^ <;r   r   r   c                 F    |                                 }| j        |_        |S r   )cloner+   )r   r   r   outs       r   r   zSetClampingMode.transformN   s    (,

 .
r   )r   r   r   r    r   r   r   r!   r"   r%   r#   r   r   r&   r'   s   @r   r7   r7   :   s         _&8 _T _ _ _ _ _ _ %24j6 S#X S]Sk        r   r7   N)typingr   r   torchvisionr   torchvision.transforms.v2r   r   r   &torchvision.tv_tensors._bounding_boxesr   r
   r)   r1   r7   r5   r   r   <module>rC      s           " " " " " " @ @ @ @ @ @ @ @ E E E E E EK K K K Ky K K K&N N N N N N N N&	' 	' 	' 	' 	'Y 	' 	' 	'    i     r   