code: def __call__(self, data):
      img = data["image"]
  
      data["image_r90"] = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)
      data["image_r180"] = cv2.rotate(
          data["image_r90"], cv2.ROTATE_90_CLOCKWISE
      )
      data["image_r270"] = cv2.rotate(
          data["image_r180"], cv2.ROTATE_90_CLOCKWISE
      )
  
      images = []
      for key in ["image", "image_r90", "image_r180", "image_r270"]:
          images.append(
              resize_norm_img(
                  data.pop(key),
                  image_shape=self.image_shape,
                  padding=self.padding,
              )[0]
          )
      data["image"] = np.stack(images, axis=0)
      data["label"] = np.array(list(range(4)))
      if not self.select_all:
          data["image"] = data["image"][0::2]  # just choose 0 and 180
          data["label"] = data["label"][
              0:2
          ]  # label needs to be continuous
      if self.mode == "test":
          data["image"] = data["image"][0]
          data["label"] = data["label"][0]
      return data
  
file_path: PaddleOCR/ppocr/data/imaug/ssl_img_aug.py
imports: import math
  import cv2
  import numpy
  import random
  from PIL import Image
  from .rec_img_aug import resize_norm_img
label_desc: Use image node_id 2 for calling the SSLRotateResize obj's underlying member method code with example usage: obj.__call__(data) and returns: data