code: def hsv_add(img, stateimg, h_amt, s_amt, v_amt):
      """Modify the image color by specifying additive HSV Values.
  
      Since the underlying images are RGB, all three values HSV
      must be specified at the same time.
  
      The RGB triplet in the image is converted to HSV, the operation
      is applied, and then the HSV triplet is converted back to RGB
  
      HSV values are scaled to H(0. - 360.), S(0. - 1.), V(0. - 1.)
      then the operation is performed and any overflow is clipped, then the
      reverse transform is performed. Those are the ranges to keep in mind,
      when passing in values.
  
      Parameters
      ----------
      img : (M, N, 3) ndarray of uint8
          Output image.
      stateimg : (M, N, 3) ndarray of uint8
          Input image.
      h_amt : float
          Ammount to add to H channel.
      s_amt : float
          Ammount to add to S channel.
      v_amt : float
          Ammount to add to V channel.
  
  
      """
  
      height, width, _ = img.shape
  
      HSV = [0.0] * 3
      RGB = [0.0] * 3
  
      for i in range(height):
          for j in range(width):
              RGB[0] = stateimg[i, j, 0]
              RGB[1] = stateimg[i, j, 1]
              RGB[2] = stateimg[i, j, 2]
  
              rgb_2_hsv(RGB, HSV)
  
              # Add operation
              HSV[0] += h_amt
              HSV[1] += s_amt
              HSV[2] += v_amt
  
              hsv_2_rgb(HSV, RGB)
  
              RGB[0] *= 255
              RGB[1] *= 255
              RGB[2] *= 255
  
              img[i, j, 0] = RGB[0]
              img[i, j, 1] = RGB[1]
              img[i, j, 2] = RGB[2]
  
file_path: pythran/pythran/tests/scikit-image/_colormixer.py
imports: import numpy
label_desc: Use image node_id 10 for calling a global function with example usage: hsv_add(img, stateimg, h_amt, s_amt, v_amt) without return types