Spaces:
Running
Running
| import numpy as np | |
| def clip_boxes(boxes, reference_box, copy=True): | |
| """Clip boxes to reference box. | |
| References: | |
| `clip_to_window` in TensorFlow object detection API. | |
| """ | |
| if copy: | |
| boxes = boxes.copy() | |
| ref_x_min, ref_y_min, ref_x_max, ref_y_max = reference_box[:4] | |
| lower = np.array([ref_x_min, ref_y_min, ref_x_min, ref_y_min]) | |
| upper = np.array([ref_x_max, ref_y_max, ref_x_max, ref_y_max]) | |
| np.clip(boxes[..., :4], lower, upper, boxes[..., :4]) | |
| return boxes | |
| def clip_boxes_to_image(boxes, image_width, image_height, subpixel=True, copy=True): | |
| """Clip boxes to image boundaries. | |
| References: | |
| `clip_boxes` in py-faster-rcnn | |
| `core.boxes_op_list.clip_to_window` in TensorFlow object detection API. | |
| `structures.Boxes.clip` in detectron2 | |
| Notes: | |
| Equivalent to `clip_boxes(boxes, [0,0,image_width-1,image_height-1], copy)` | |
| """ | |
| if not subpixel: | |
| image_width -= 1 | |
| image_height -= 1 | |
| reference_box = [0, 0, image_width, image_height] | |
| return clip_boxes(boxes, reference_box, copy) | |