class_docstr: Crop the middle part of the image to the specified size.
  
  Args:
     crop_size(int): Crop size.
  
  Return:
      img(np.ndarray): Croped image.
class_docstr_tok: ["Crop","the","middle","part","of","the","image","to","the","specified","size",".","Args",":","crop_size","(","int",")",":","Crop","size",".","Return",":","img","(","np.ndarray",")",":","Croped","image","."]
code: def __call__(self, img: np.ndarray):
      img_width, img_height, _ = img.shape
      crop_top = int((img_height - self.crop_size) / 2.0)
      crop_left = int((img_width - self.crop_size) / 2.0)
      return img[
          crop_left : crop_left + self.crop_size,
          crop_top : crop_top + self.crop_size,
          :,
      ]
  
imports: import random
  from typing import Callable, Union, List, Tuple
  import cv2
  import PIL
  import numpy
  import paddlehub.vision.functional
label_desc: Use image node_id 2 for calling the CenterCrop obj's underlying member method code with example usage: obj.__call__(img) and returns: img