import numpy as np
def IOU(det):
order = det[:, 4].ravel().argsort()[::-1]
det = det[order, :] # score值大的排在前面
while det.shape[0] > 0: # det.shape[0] 返回检测到的人头数量(n*5)
area = (det[:, 2] - det[:, 0] + 1) * (det[:, 3] - det[:, 1] + 1)
xx1 = np.maximum(det[0, 0], det[:, 0])
yy1 = np.maximum(det[0, 1], det[:, 1])
xx2 = np.minimum(det[0, 2], det[:, 2])
yy2 = np.minimum(det[0, 3], det[:, 3])
w = np.maximum(0.0, xx2 - xx1 + 1)
h = np.maximum(0.0, yy2 - yy1 + 1)
inter = w * h
o = inter / (area[0] + area[:] - inter)
merge_index = np.where(o >= 0.7)[0] # 统计交并比大于0.7的检测框
目标检测中IOU计算的核心代码
最新推荐文章于 2024-05-28 21:02:49 发布