code: def hsv_to_rgb(hsv):
      
      # Translated from source of colorsys.hsv_to_rgb
      # h,s should be a numpy arrays with values between 0.0 and 1.0
      # v should be a numpy array with values between 0.0 and 255.0
      # hsv_to_rgb returns an array of uints between 0 and 255.
      rgb = np.empty_like(hsv)
      rgb[..., 3:] = hsv[..., 3:]
      h, s, v = hsv[..., 0], hsv[..., 1], hsv[..., 2]
      i = (h * 6.0).astype('uint8')
      f = (h * 6.0) - i
      p = v * (1.0 - s)
      q = v * (1.0 - s * f)
      t = v * (1.0 - s * (1.0 - f))
      i = i % 6
      conditions = [s == 0.0, i == 1, i == 2, i == 3, i == 4, i == 5]
      rgb[..., 0] = np.select(conditions, [v, q, p, p, t, v], default=v)
      rgb[..., 1] = np.select(conditions, [v, v, v, q, p, p], default=t)
      rgb[..., 2] = np.select(conditions, [v, p, t, v, v, q], default=p)
      return rgb.astype('uint8')
docs: Input HSV image [0~1] return RGB image [0~255].
  
      Parameters
      -------------
      hsv : numpy.array
          An image with values between 0.0 and 1.0
  
      Returns
      -------
      numpy.array
          A processed image.