class_docstr: Generate the ground truth targets of FCENet: Fourier Contour Embedding
  for Arbitrary-Shaped Text Detection.
  
  [https://arxiv.org/abs/2104.10442]
  
  Args:
      fourier_degree (int): The maximum Fourier transform degree k.
      resample_step (float): The step size for resampling the text center
          line (TCL). It's better not to exceed half of the minimum width.
      center_region_shrink_ratio (float): The shrink ratio of text center
          region.
      level_size_divisors (tuple(int)): The downsample ratio on each level.
      level_proportion_range (tuple(tuple(int))): The range of text sizes
          assigned to each level.
code: def vector_angle(self, vec1, vec2):
      if vec1.ndim > 1:
          unit_vec1 = vec1 / (norm(vec1, axis=-1) + 1e-8).reshape(
              (-1, 1)
          )
      else:
          unit_vec1 = vec1 / (norm(vec1, axis=-1) + 1e-8)
      if vec2.ndim > 1:
          unit_vec2 = vec2 / (norm(vec2, axis=-1) + 1e-8).reshape(
              (-1, 1)
          )
      else:
          unit_vec2 = vec2 / (norm(vec2, axis=-1) + 1e-8)
      return np.arccos(
          np.clip(np.sum(unit_vec1 * unit_vec2, axis=-1), -1.0, 1.0)
      )
  
imports: import cv2
  import numpy
  from numpy.fft import fft
  from numpy.linalg import norm
  import sys
label_desc: Use image node_id 2 for calling the FCENetTargets obj's underlying member method code with example usage: obj.vector_angle(vec1, vec2) and returns: np