
    ёi                       % S SK Jr  S SKJrJrJrJr  S SKJr  S SK	J
r
  S SKJr  \(       a6  S SKJr  S SKJr  S SKJr  \S   rS	\S
'   \\\\R*                  \   4   rS	\S'   / rSqS
\S'   SS jrSS jr S     SS jjrg)    )annotations)TYPE_CHECKINGAnyLiteralUnion)Image)	TypeAlias)
try_importN)Tensorpilcv2tensorr	   _ImageBackend_ImageDataTyper   _image_backendc                0    U S;  a  [        SU  35      eU qg)a  
Specifies the backend used to load images in class :ref:`api_paddle_datasets_ImageFolder`
and :ref:`api_paddle_datasets_DatasetFolder` . Now support backends are pillow and opencv.
If backend not set, will use 'pil' as default.

Args:
    backend (str): Name of the image load backend, should be one of {'pil', 'cv2'}.

Examples:

    .. code-block:: python

        >>> import os
        >>> import shutil
        >>> import tempfile
        >>> import numpy as np
        >>> from PIL import Image

        >>> from paddle.vision import DatasetFolder
        >>> from paddle.vision import set_image_backend

        >>> set_image_backend('pil')

        >>> def make_fake_dir():
        ...     data_dir = tempfile.mkdtemp()
        ...
        ...     for i in range(2):
        ...         sub_dir = os.path.join(data_dir, 'class_' + str(i))
        ...         if not os.path.exists(sub_dir):
        ...             os.makedirs(sub_dir)
        ...         for j in range(2):
        ...             fake_img = Image.fromarray((np.random.random((32, 32, 3)) * 255).astype('uint8'))
        ...             fake_img.save(os.path.join(sub_dir, str(j) + '.png'))
        ...     return data_dir

        >>> temp_dir = make_fake_dir()

        >>> pil_data_folder = DatasetFolder(temp_dir)

        >>> for items in pil_data_folder:
        ...     break

        >>> print(type(items[0]))
        <class 'PIL.Image.Image'>

        >>> # use opencv as backend
        >>> set_image_backend('cv2')

        >>> cv2_data_folder = DatasetFolder(temp_dir)

        >>> for items in cv2_data_folder:
        ...     break

        >>> print(type(items[0]))
        <class 'numpy.ndarray'>

        >>> shutil.rmtree(temp_dir)
r   >Expected backend are one of ['pil', 'cv2', 'tensor'], but got N)
ValueErrorr   )backends    S/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/vision/image.pyset_image_backendr   &   s,    x ..LWIV
 	
 N    c                     [         $ )a  
Gets the name of the package used to load images

Returns:
    str: backend of image load.

Examples:

    .. code-block:: python

        >>> from paddle.vision import get_image_backend

        >>> backend = get_image_backend()
        >>> print(backend)
        pil

)r    r   r   get_image_backendr   i   s
    $ r   c                    Uc  [         nUS;  a  [        SU 35      eUS:X  a  [        R                  " U 5      $ US:X  a  [	        S5      nUR                  U 5      $ g)a  Load an image.

Args:
    path (str): Path of the image.
    backend (str, optional): The image decoding backend type. Options are
        `cv2`, `pil`, `None`. If backend is None, the global _imread_backend
        specified by :ref:`api_paddle_vision_set_image_backend` will be used. Default: None.

Returns:
    PIL.Image or np.array: Loaded image.

Examples:

    .. code-block:: python

        >>> import numpy as np
        >>> from PIL import Image
        >>> from paddle.vision import image_load, set_image_backend

        >>> fake_img = Image.fromarray((np.random.random((32, 32, 3)) * 255).astype('uint8'))

        >>> path = 'temp.png'
        >>> fake_img.save(path)

        >>> set_image_backend('pil')

        >>> pil_img = image_load(path).convert('RGB')  # type: ignore

        >>> print(type(pil_img))
        <class 'PIL.Image.Image'>

        >>> # use opencv as backend
        >>> set_image_backend('cv2')

        >>> np_img = image_load(path)
        >>> print(type(np_img))
        <class 'numpy.ndarray'>

Nr   r   r   r   )r   r   r   openr
   imread)pathr   r   s      r   
image_loadr!   ~   sn    V  ..LWIV
 	
 %zz$	E	zz$ 
r   )r   r   returnNone)r"   r   )N)r    strr   z_ImageBackend | Noner"   z_ImageDataType | None)
__future__r   typingr   r   r   r   PILr   typing_extensionsr	   paddle.utilsr
   numpy.typingnpt	PIL.ImagePILImagepaddler   r   __annotations__NDArrayr   __all__r   r   r   r!   r   r   r   <module>r2      s    # 5 5  ' #+&'=>M9> %fhC8H&H INII
 % %@F, 046 
6 ,6 6 r   