先手撸个交并比。第一次写错了,没有加入不相交的判断。
def IOU(a,b):
wx1=max(a[0],b[0])
wy1=max(a[1],b[1])
wx2=min(a[2],b[2])
wy2=min(a[3],b[3])
print(wx2,wx1,wy2,wy1)
w=max(0,wx2-wx1)
h=max(0,wy2-wy1)
inter=w*h
print()
union=(a[2]-a[0])*(a[3]-a[1])+(b[2]-b[0])*(b[3]-b[1])
print((inter,union))
return inter/(union-inter)
测试代码
a=[100,100,200,200]
b=[110,140,250,250]
c=[100,150,180,180]
d=[100,100,200,202]
e=[0,0,10,10]
print(IOU(d,d))