Ë
    èÓ^j]  ã                   ó”   — 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     €új/var/www/ramen.bs-engineer-server.com/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   € Ü×,Ñ,¨T¸d¿k¹kÔJÐJr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚBoundingBoxesÚ_transformed_typesr   ÚstrÚBoundingBoxFormatr   Údictr   r   Ú__classcell__©r   s   @r   r
   r
      so   ø„ ñð %×2Ñ2Ð4Ðð˜u S¨*×*FÑ*FÐ%FÑGð ÈDõ ðK˜j×6Ñ6ð KÀÀSÈ#ÀXÁð KÐS]×SkÑSk÷ 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]×SkÑSk÷ 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)ÚClampKeyPointszŽClamp 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ð 'Èz×OcÑOcô '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=   ø€ Ü‰ÑÔØ*ˆÔà×ÑÐ%;Ñ;ÜÐMÈmÈ_Ð]Ó^Ð^ð <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]×SkÑ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      sE   ðß å "ß @Ý EôK˜yô Kô&N˜ô Nô&	'�Yô 	'ô�iõ r   