docstr: Args:
      im (np.ndarray): image (np.ndarray)
      im_info (dict): info of image
  Returns:
      im (np.ndarray):  processed image (np.ndarray)
      im_info (dict): info of processed image
docstr_tok: ["Args",":","im","(","np.ndarray",")",":","image","(","np.ndarray",")","im_info","(","dict",")",":","info","of","image","Returns",":","im","(","np.ndarray",")",":","processed","image","(","np.ndarray",")","im_info","(","dict",")",":","info","of","processed","image"]
code: def __call__(self, im, im_info):
      """
      Args:
          im (np.ndarray): image (np.ndarray)
          im_info (dict): info of image
      Returns:
          im (np.ndarray):  processed image (np.ndarray)
          im_info (dict): info of processed image
      """
      assert len(self.target_size) == 2
      assert self.target_size[0] > 0 and self.target_size[1] > 0
      height, width = self.target_size
      h, w = im.shape[:2]
      im, ratio, padw, padh = self.letterbox(
          im, height=height, width=width
      )
  
      new_shape = [round(h * ratio), round(w * ratio)]
      im_info["im_shape"] = np.array(new_shape, dtype=np.float32)
      im_info["scale_factor"] = np.array(
          [ratio, ratio], dtype=np.float32
      )
      return im, im_info
  
imports: import numpy
  import cv2
  import copy
label_desc: Use image node_id 3 for calling the LetterBoxResize obj's underlying member method code with example usage: obj.__call__(im, im_info) and returns: im,  im_info