(1)计算IOU
一、 模块介绍
在实际应用中,其实我们在代码中经常会需要计算IOU,下面函数模块的输入分别为需要计算的两个矩形框的左上定点坐标和右下顶点坐标,通过IOU计算公式进行计算,代码已验证可以直接使用。
二、代码实现
defComputeIOU(rec1,rec2):""" 计算两个矩形的iou,输入分别为左上角顶点和右下角顶点 :param rec1: (x0,y0,x1,y1) :param rec2: (x0,y0,x1,y1) :return: """left_max=max(rec1[0],rec2[0])right_min=min(rec1[2],rec2[2])up_max=max(rec1[1],rec2[1])down_min=min(rec1[3],rec2[3])# 假设两者没有相交的区域ifleft_max>=right_minorup_max>=down_min:return0# 假设两者有相交的区域else:s1=(rec1[2]-rec1[0])*(rec1[3]-rec1[1])s2=(rec2[2]-rec2[0])*(rec2[3]-rec2[1])S_cross=(right_min-left_max)*(down_min-up_max)returnS_cross/(s1+s2-S_cross)