class_docstr: Visualization the segmentation result.
  Args:
      weight(float): weight of original image in combining image, default is 0.6.
code: def __call__(
      self, image: str, result: np.ndarray, save_dir: str
  ) -> np.ndarray:
      color_map = self.get_color_map_list()
      color_map = np.array(color_map).astype("uint8")
      # Use OpenCV LUT for color mapping
      c1 = cv2.LUT(result, color_map[:, 0])
      c2 = cv2.LUT(result, color_map[:, 1])
      c3 = cv2.LUT(result, color_map[:, 2])
      pseudo_img = np.dstack((c1, c2, c3))
      im = cv2.imread(image)
      vis_result = cv2.addWeighted(
          im, self.weight, pseudo_img, 1 - self.weight, 0
      )
  
      if save_dir is not None:
          if not os.path.exists(save_dir):
              os.makedirs(save_dir)
          image_name = os.path.split(image)[-1]
          out_path = os.path.join(save_dir, image_name)
          cv2.imwrite(out_path, vis_result)
  
      return vis_result
  
imports: import os
  import random
  from typing import Callable, Union, List, Tuple
  import cv2
  import numpy
  from PIL import Image
  import paddlehub.vision.functional
label_desc: Use image node_id 2 for calling the SegmentVisual obj's underlying member method code with example usage: obj.__call__(image, result, save_dir) and returns: vis_result