code: def warp_img(
      src_img, box, jitter=False, jitter_ratio_x=0.5, jitter_ratio_y=0.1
  ):
      """Crop box area from image using opencv warpPerspective.
  
      Args:
          src_img (np.array): Image before cropping.
          box (list[float | int]): Coordinates of quadrangle.
          jitter (bool): Whether to jitter the box.
          jitter_ratio_x (float): Horizontal jitter ratio relative to the height.
          jitter_ratio_y (float): Vertical jitter ratio relative to the height.
  
      Returns:
          np.array: The warped image.
      """
      assert is_seq_of(box, (float, int))
      assert len(box) == 8
  
      h, w = src_img.shape[:2]
      points_x = [min(max(x, 0), w) for x in box[0:8:2]]
      points_y = [min(max(y, 0), h) for y in box[1:9:2]]
  
      points_x, points_y = sort_vertex(points_x, points_y)
  
      if jitter:
          bbox_jitter(
              points_x,
              points_y,
              jitter_ratio_x=jitter_ratio_x,
              jitter_ratio_y=jitter_ratio_y,
          )
  
      points = [Point(points_x[i], points_y[i]) for i in range(4)]
      edges = [
          LineString([points[i], points[i + 1 if i < 3 else 0]])
          for i in range(4)
      ]
  
      pts1 = np.float32([[points[i].x, points[i].y] for i in range(4)])
      box_width = max(edges[0].length, edges[2].length)
      box_height = max(edges[1].length, edges[3].length)
  
      pts2 = np.float32(
          [
              [0, 0],
              [box_width, 0],
              [box_width, box_height],
              [0, box_height],
          ]
      )
      M = cv2.getPerspectiveTransform(pts1, pts2)
      dst_img = cv2.warpPerspective(
          src_img, M, (int(box_width), int(box_height))
      )
  
      return dst_img
  
imports: import cv2
  import numpy
  from mmengine.utils import is_seq_of
  from shapely.geometry import LineString, Point
  from .bbox_utils import bbox_jitter
  from .polygon_utils import sort_vertex
label_desc: Use image node_id 1 for calling a global function with example usage: warp_img(src_img, box, jitter, jitter_ratio_x, jitter_ratio_y) and returns: dst_img