import numpy as np
def iou(box,boxes,isMin=False):#[x1,y1,x2,y2,c]
#计算面积
box_area = (box[2]-box[0])*(box[3]-box[1])
boxes_area = ((boxes[:,2]-boxes[:,0])*(boxes[:,3]-boxes[:,1]))
#找交集
xx1 = np.maximum(box[0],boxes[:,0])
yy1 = np.maximum(box[1], boxes[:, 1])
xx2 = np.minimum(box[2], boxes[:, 2])
yy2 = np.minimum(box[3], boxes[:, 3])
#判断是否有交集
w = np.maximum(0,xx2-xx1)
h = np.maximum(0,yy2-yy1)
#交集面积
inter = w*h
if isMin:#最小面积iou
over = np.true_divide(inter,np.minimum(box_area,boxes_area))
else:#并集iou
over = np.true_divide(inter,(box_area+boxes_area-inter))
return over
MTCNN中重叠度IOU代码
最新推荐文章于 2020-05-21 18:10:19 发布