Read image from ``path``.
    If you specify the ``size``, the output array is resized.
    Default output shape is (height, width, channel) for RGB image and (height, width) for gray-scale image.

    Args:
        path (String or File Object): Input image path.
        grayscale (bool): If True, the img is rescaled to gray-scale. Default is False.
        size (tuple of int): Output shape. The order is (width, height). If None, the image is not resized. Default is None.
        interpolate (str): Interpolation method.
            This argument is depend on the backend.
            If you want to specify this argument, you should pay much attention to which backend you use now.
            What you can select is below:
             - pil backend: ["nearest", "box", "bilinear", "hamming", "bicubic", "lanczos"].
             - cv2 backend: ["nearest", "bilinear", "bicubic", "lanczos"].
            Default is "bilinear" for both backends.
        channel_first (bool): If True, the shape of the output array is (channel, height, width) for RGB image. Default is False.
        as_uint16 (bool): If True, this function tries to read img as np.uint16. Default is False.
        num_channels (int): channel size of output array.
            Default is -1 which preserves raw image shape.
    Returns:
         numpy.ndarray :
         if as_uint16=True output dtype is np.uint16, else np.uint8 (default).

def imread(path, grayscale=False, size=None, interpolate="bilinear",
           channel_first=False, as_uint16=False, num_channels=-1, **kwargs):
    """
    Read image from ``path``.
    If you specify the ``size``, the output array is resized.
    Default output shape is (height, width, channel) for RGB image and (height, width) for gray-scale image.

    Args:
        path (String or File Object): Input image path.
        grayscale (bool): If True, the img is rescaled to gray-scale. Default is False.
        size (tuple of int): Output shape. The order is (width, height). If None, the image is not resized. Default is None.
        interpolate (str): Interpolation method.
            This argument is depend on the backend.
            If you want to specify this argument, you should pay much attention to which backend you use now.
            What you can select is below:
             - pil backend: ["nearest", "box", "bilinear", "hamming", "bicubic", "lanczos"].
             - cv2 backend: ["nearest", "bilinear", "bicubic", "lanczos"].
            Default is "bilinear" for both backends.
        channel_first (bool): If True, the shape of the output array is (channel, height, width) for RGB image. Default is False.
        as_uint16 (bool): If True, this function tries to read img as np.uint16. Default is False.
        num_channels (int): channel size of output array.
            Default is -1 which preserves raw image shape.
    Returns:
         numpy.ndarray :
         if as_uint16=True output dtype is np.uint16, else np.uint8 (default).
    """

    return backend_manager.module.imread(path, grayscale=grayscale, size=size, interpolate=interpolate,
                                         channel_first=channel_first, as_uint16=as_uint16, num_channels=num_channels,
                                         **kwargs)