class_docstr: Random rotate the image w.r.t a random center
code: def get_transform(self, img):
      center = img.shape[1::-1] * self._rand_range(
          self.center_range[0], self.center_range[1], (2,)
      )
      deg = self._rand_range(-self.max_deg, self.max_deg)
      if self.step_deg:
          deg = deg // self.step_deg * self.step_deg
      """
          The correct center is shape*0.5-0.5. This can be verified by:
  
          SHAPE = 7
          arr = np.random.rand(SHAPE, SHAPE)
          orig = arr
          c = SHAPE * 0.5 - 0.5
          c = (c, c)
          for k in range(4):
              mat = cv2.getRotationMatrix2D(c, 90, 1)
              arr = cv2.warpAffine(arr, mat, arr.shape)
          assert np.all(arr == orig)
          """
      mat = cv2.getRotationMatrix2D(tuple(center - 0.5), float(deg), 1)
      return WarpAffineTransform(
          mat,
          img.shape[1::-1],
          interp=self.interp,
          borderMode=self.border,
          borderValue=self.border_value,
      )
  
imports: import math
  import numpy
  import cv2
  from .base import ImageAugmentor
  from .transform import WarpAffineTransform, CropTransform, TransformList
label_desc: Use image node_id 2 for calling the Rotation obj's underlying member method code with example usage: obj.get_transform(img) and returns: WarpAffineTransform