code: def testResizeImageBoxes(self):
      image = self._gen_image(100, 100, 3)
      # Half size, corner box
      boxes = np.array([[0, 0, 10, 10, -1]])
      _, resized_boxes, scale = self._resize_image(
          image, boxes, max_size=50
      )
      self.assertAllEqual(resized_boxes, [[0, 0, 5, 5, -1]])
  
      # Half size, middle box
      boxes = np.array([[10, 10, 90, 90, -1]])
      _, resized_boxes, scale = self._resize_image(
          image, boxes, max_size=50
      )
      self.assertAllEqual(resized_boxes, [[5, 5, 45, 45, -1]])
  
      # Quarter size, maximum box
      boxes = np.array([[0, 0, 99, 99, -1]])
      _, resized_boxes, scale = self._resize_image(
          image, boxes, max_size=25
      )
      self.assertAllEqual(resized_boxes, [[0, 0, 24, 24, -1]])
  
imports: import numpy
  import tensorflow
  from easydict import EasyDict
  from luminoth.utils.image import resize_image, flip_image, random_patch, random_resize, random_distortion, patch_image
  from luminoth.utils.test.gt_boxes import generate_gt_boxes
label_desc: Use image node_id 10 for calling the ImageTest obj's underlying member method code with example usage: obj.testResizeImageBoxes() without return types