code: def list_image(root, recursive, exts):
      
  
      i = 0
      if recursive:
          cat = {}
          for path, dirs, files in os.walk(root, followlinks=True):
              dirs.sort()
              files.sort()
              for fname in files:
                  fpath = os.path.join(path, fname)
                  suffix = os.path.splitext(fname)[1].lower()
                  if os.path.isfile(fpath) and (suffix in exts):
                      if path not in cat:
                          cat[path] = len(cat)
                      yield (i, os.path.relpath(fpath, root), cat[path])
                      i += 1
          for k, v in sorted(cat.items(), key=lambda x: x[1]):
              print(os.path.relpath(k, root), v)
      else:
          for fname in sorted(os.listdir(root)):
              fpath = os.path.join(root, fname)
              suffix = os.path.splitext(fname)[1].lower()
              if os.path.isfile(fpath) and (suffix in exts):
                  yield (i, os.path.relpath(fpath, root), 0)
                  i += 1
docs: Traverses the root of directory that contains images and
      generates image list iterator.
      Parameters
      ----------
      root: string
      recursive: bool
      exts: string
      Returns
      -------
      image iterator that contains all the image under the specified path