
    x h]                         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y)    )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                 0    t         |           || _        y N)super__init__r   )selfr   	__class__s     {/home/developers/rajanand/mypropertyqr-fmb-refixing-v2/venv/lib/python3.12/site-packages/torchvision/transforms/v2/_meta.pyr   z!ConvertBoundingBoxFormat.__init__   s        inptparamsc                 D    t        j                  || j                        S )N)
new_format)Fconvert_bounding_box_formatr   r   r   r   s      r   	transformz"ConvertBoundingBoxFormat.transform   s    ,,TdkkJJr   )__name__
__module____qualname____doc__r   BoundingBoxes_transformed_typesr   strBoundingBoxFormatr   dictr   r   __classcell__r   s   @r   r
   r
      so     %224uS**F*F%FG D Kj66 KS#X KS]SkSk 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.
    clamping_moder   Nc                 0    t         |           || _        y r   )r   r   r*   r   r*   r   s     r   r   zClampBoundingBoxes.__init__$   s    *r   r   r   c                 D    t        j                  || j                        S )N)r*   )r   clamp_bounding_boxesr*   r   s      r   r   zClampBoundingBoxes.transform*   s    %%d$:L:LMMr   )auto)r   r   r   r    r   r   r#   r   r   r!   r"   r%   r   r   r&   r'   s   @r   r)   r)      sk    +e,>,C&D +RV + %224Nj66 NS#X NS]SkSk Nr   r)   c                   p    e Zd ZdZej
                  fZdej
                  deee	f   dej
                  fdZ
y)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   .   sF    
 %..0'j22 'DcN 'zOcOc 'r   r1   c                        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                 h    t         |           || _        | j                  dvrt        d|       y )N)Nsofthardz.clamping_mode must be soft, hard or None, got )r   r   r*   
ValueErrorr,   s     r   r   zSetClampingMode.__init__E   s=    *%;;Mm_]^^ <r   r   r   c                 H    |j                         }| 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24j66 S#X S]SkSk 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      sE     " @ EKy K&N N&	'Y 	'i r   