code: def affine_transform(
      self,
      frame,
      landmarks,
      reference,
      target_size=(224, 224),
      reference_size=(224, 224),
      stable_points=(0, 1),
      interpolation=cv2.INTER_LINEAR,
      border_mode=cv2.BORDER_CONSTANT,
      border_value=0,
  ):
      stable_reference = self.get_stable_reference(
          reference, stable_points, reference_size, target_size
      )
      transform = self.estimate_affine_transform(
          landmarks, stable_points, stable_reference
      )
      (
          transformed_frame,
          transformed_landmarks,
      ) = self.apply_affine_transform(
          frame,
          landmarks,
          transform,
          target_size,
          interpolation,
          border_mode,
          border_value,
      )
  
      return transformed_frame, transformed_landmarks
  
file_path: audio/examples/avsr/data_prep/detectors/retinaface/video_process.py
imports: import cv2
  import numpy
  from skimage import transform
label_desc: Use image node_id 5 for calling the VideoProcess obj's underlying member method code with example usage: obj.affine_transform(frame, landmarks, reference, target_size, reference_size, stable_points, interpolation, border_mode, border_value) and returns: transformed_frame,  transformed_landmarks