code: def imrotate(
      img,
      angle,
      center=None,
      scale=1.0,
      border_value=0,
      interpolation="bilinear",
      auto_bound=False,
  ):
      """Rotate an image.
  
      Args:
          img (ndarray): Image to be rotated.
          angle (float): Rotation angle in degrees, positive values mean
              clockwise rotation.
          center (tuple[float], optional): Center point (w, h) of the rotation in
              the source image. If not specified, the center of the image will be
              used.
          scale (float): Isotropic scale factor.
          border_value (int): Border value.
          interpolation (str): Same as :func:`resize`.
          auto_bound (bool): Whether to adjust the image size to cover the whole
              rotated image.
  
      Returns:
          ndarray: The rotated image.
      """
      if center is not None and auto_bound:
          raise ValueError("`auto_bound` conflicts with `center`")
      h, w = img.shape[:2]
      if center is None:
          center = ((w - 1) * 0.5, (h - 1) * 0.5)
      assert isinstance(center, tuple)
  
      matrix = cv2.getRotationMatrix2D(center, -angle, scale)
      if auto_bound:
          cos = np.abs(matrix[0, 0])
          sin = np.abs(matrix[0, 1])
          new_w = h * sin + w * cos
          new_h = h * cos + w * sin
          matrix[0, 2] += (new_w - w) * 0.5
          matrix[1, 2] += (new_h - h) * 0.5
          w = int(np.round(new_w))
          h = int(np.round(new_h))
      rotated = cv2.warpAffine(
          img,
          matrix,
          (w, h),
          flags=cv2_interp_codes[interpolation],
          borderValue=border_value,
      )
      return rotated
  
imports: import numbers
  import cv2
  import numpy
  from ..utils import to_2tuple
  from .io import imread_backend
label_desc: Use image node_id 9 for calling a global function with example usage: imrotate(img, angle, center, scale, border_value, interpolation, auto_bound) and returns: rotated