code: def __call__(self, image, label):
      if random.random() < self.p:
          angle = (
              self.rotate[0]
              + (self.rotate[1] - self.rotate[0]) * random.random()
          )
          h, w = label.shape
          matrix = cv2.getRotationMatrix2D((w / 2, h / 2), angle, 1)
          image = cv2.warpAffine(
              image,
              matrix,
              (w, h),
              flags=cv2.INTER_LINEAR,
              borderMode=cv2.BORDER_CONSTANT,
              borderValue=self.padding,
          )
          label = cv2.warpAffine(
              label,
              matrix,
              (w, h),
              flags=cv2.INTER_NEAREST,
              borderMode=cv2.BORDER_CONSTANT,
              borderValue=self.ignore_label,
          )
      return image, label
  
imports: import random
  import math
  import numpy
  import numbers
  import collections
  import cv2
  import torch
  import time
label_desc: Use image node_id 2 for calling the RandRotate obj's underlying member method code with example usage: obj.__call__(image, label) and returns: image,  label