def GetIoU(A, B):
'''
A[0],A[1]左上角坐标
A[2],A[3]右下角坐标
'''
min_x = min(A[0], B[0])
max_x = max(A[2], B[2])
min_y = min(A[1], B[1])
max_y = max(A[3], B[3])
w_A, h_A = A[2]-A[0], A[3]-A[1]
w_B, h_B = B[2]-B[0], B[3]-B[1]
S_A = w_A*h_A
S_B = w_B*h_B
w_in = (w_A+w_B)-(max_x-min_x) if (w_A+w_B)-(max_x-min_x)>0 else 0
h_in = (h_A+h_B)-(max_y-min_y) if (h_A+h_B)-(max_y-min_y)>0 else 0
print("w_in", w_in)
print("h_in", h_in)
S_in = w_in*h_in
S_un = S_A + S_B - S_in
return S_in/S_un
if __name__ == "__main__":
A = [5, 5, 10, 10]
B = [6, 6, 8, 8]
print(GetIoU(A, B))
python实现IoU
最新推荐文章于 2023-06-05 11:31:33 发布