def iou(test_box,base_box):
ret = 0
#若坐标为空,return 0
if test_box == []:
return ret
if base_box == []:
return ret
x1 = test_box[0]
y1 = test_box[1]
w1 = test_box[2]
h1 = test_box[3]
x2 = base_box[0]
y2 = base_box[1]
w2 = base_box[2]
h2 = base_box[3]
x = max(x1+w1,x2+w2)
min_x = min(x1,x2)
w = w1+w2-(x-min_x)
y = max(y1+h1,y2+h2)
min_y = min(y1,y2)
h = h1+h2-(y-min_y)
if w <=0 or h <= 0:
ret = 0
else:
#重叠面积
Area = w*h
Area1 = w1*h1
Area2 = w2*h2
#Area1+Area2-Area为除去重叠面积的部分
ret = Area*1./(Area1+Area2-Area)
return ret