code: def add_gravel(img: np.ndarray, gravels: list):
      """Add gravel to the image.
  
      From https://github.com/UjjwalSaxena/Automold--Road-Augmentation-Library
  
      Args:
          img (numpy.ndarray): image to add gravel to
          gravels (list): list of gravel parameters. (float, float, float, float):
              (top-left x, top-left y, bottom-right x, bottom right y)
  
      Returns:
          numpy.ndarray:
      """
      non_rgb_warning(img)
      input_dtype = img.dtype
      needs_float = False
  
      if input_dtype == np.float32:
          img = from_float(img, dtype=np.dtype("uint8"))
          needs_float = True
      elif input_dtype not in (np.uint8, np.float32):
          raise ValueError(
              "Unexpected dtype {} for AddGravel augmentation".format(
                  input_dtype
              )
          )
  
      image_hls = cv2.cvtColor(img, cv2.COLOR_RGB2HLS)
  
      for gravel in gravels:
          y1, y2, x1, x2, sat = gravel
          image_hls[x1:x2, y1:y2, 1] = sat
  
      image_rgb = cv2.cvtColor(image_hls, cv2.COLOR_HLS2RGB)
  
      if needs_float:
          image_rgb = to_float(image_rgb, max_value=255)
  
      return image_rgb
  
imports: from __future__ import division
  from typing import Optional, Sequence, Union
  from warnings import warn
  import cv2
  import numpy
  import skimage
  from albumentations import random_utils
  from albumentations.augmentations.utils import MAX_VALUES_BY_DTYPE, _maybe_process_in_chunks, clip, clipped, ensure_contiguous, is_grayscale_image, is_rgb_image, non_rgb_warning, preserve_channel_dim, preserve_shape
label_desc: Use image node_id 26 for calling a global function with example usage: add_gravel(img, gravels) and returns: image_rgb