# 以左上角为坐标原点,box1代表第一个矩形的左上角坐标和右下角坐标
# box2代表第二个矩形的左上角坐标和右下角坐标。
def get_IOU(box1, box2):
x1 = box1[2]-box1[0] # 第一个矩形长
x2 = box2[2]-box2[0] # 第二个矩形长
y1 = box1[3]-box1[1] # 第一个矩形宽
y2 = box2[3]-box2[1] # 第二个矩形宽
x_range = max(box1[0], box1[2], box2[0], box2[2]) - min(box1[0], box1[2], box2[0], box2[2]) # 两个矩形长度范围
y_range = max(box1[1], box1[3], box2[1], box2[3]) - min(box1[1], box1[3], box2[1], box2[3]) # 两个矩形宽度范围
x_leng = x1 + x2 - x_range # 重叠长度
y_leng = y1 + y2 - y_range # 重叠宽度
if x_leng < 0 or y_leng < 0:
return 0
inter_area = x_leng * y_leng
union_area = x1 * y1 + x2 * y2 - inter_area
iou = inter_area / union_area
print(x_leng, y_leng)
print(inter_area, union_area)
return iou
目标检测的矩形IOU计算
最新推荐文章于 2022-11-23 18:56:34 发布