Spaces:
Running
Running
| def merge_boxes(box1, box2): | |
| return (min(box1[0], box2[0]), min(box1[1], box2[1]), max(box1[2], box2[2]), max(box1[3], box2[3])) | |
| def join_lines(bboxes, max_gap=5): | |
| to_merge = {} | |
| for i, box1 in bboxes: | |
| for z, box2 in bboxes[i + 1:]: | |
| j = i + z + 1 | |
| if box1 == box2: | |
| continue | |
| if box1[0] <= box2[0] and box1[2] >= box2[2]: | |
| if abs(box1[1] - box2[3]) <= max_gap: | |
| if i not in to_merge: | |
| to_merge[i] = [] | |
| to_merge[i].append(j) | |
| merged_boxes = set() | |
| merged = [] | |
| for i, box in bboxes: | |
| if i in merged_boxes: | |
| continue | |
| if i in to_merge: | |
| for j in to_merge[i]: | |
| box = merge_boxes(box, bboxes[j][1]) | |
| merged_boxes.add(j) | |
| merged.append(box) | |
| return merged | |