IOU交并比计算

在⽬标检测算法中,IoU (intersection over union,交并⽐)是⽬标检测算法中⽤来评价2个矩形框之间相似度的指标:
IoU = 两个矩形框相交的⾯积 / 两个矩形框相并的⾯积

 

 

import numpy as np
import matplotlib.pyplot as plt
def iou(box1, box2,wh=False):
    # 判断检测框位置信息表现形式
    if wh == False:
        # 极坐标
        xmin1, ymin1, xmax1, ymax1 = box1
        xmin2, ymin2, xmax2, ymax2 = box2
        print(xmin1, ymin1, xmax1, ymax1)
        print(xmin2, ymin2, xmax2, ymax2)

    else:
        # 中心坐标
        # 左上角坐标
        xmin1, ymin1 = int(box1[0])-int(box1[2]/2.0),int(box1[1])-int(box1[3]/2.0)
        xmax1, ymax1 = int(box1[0])+int(box1[2]/2.0),int(box1[1])+int(box1[3]/2.0)
        # 右下角坐标
        xmin2, ymin2 = int(box2[0])-int(box2[2]/2.0),int(box2[1])-int(box2[3]/2.0)
        xmax2, ymax2 = int(box2[0])+int(box2[2]/2.0),int(box2[1])+int(box2[3]/2.0)

    # 获取交集的左上角和右下角坐标
    xx1 = np.max([xmin1, xmin2])
    yy1 = np.max([ymin1, ymin2])
    xx2 = np.min([xmax1, xmax2])
    yy2 = np.min([ymax1, ymax2])

    # 计算交集面积
    inter_area = (np.max([0,xx2 - xx1])) * (np.max([0,yy2 - yy1]))
    # 计算并的面积
    area1 = (xmax1 - xmin1) * (ymax1 - ymin1)
    area2 = (xmax2 - xmin2) * (ymax2 - ymin2)
    union_area = area1 + area2 - inter_area
    # IOU
    IOU = inter_area / (union_area + 1e-6)
    return IOU



if __name__ == '__main__':
    # 框的坐标
    Pred_box = [25,40,165,190]
    True_box = [10,30,120,180]
    # 将框绘制在图像上
    img = plt.imread('img_1.png')
    fig = plt.imshow(img)
    # 第一个参数是左上角的点坐标
    # 第二个参数是宽,第三个参数是长
    fig.axes.add_patch(plt.Rectangle((True_box[0],True_box[1]),True_box[2]-True_box[0],True_box[3]-True_box[1],fill=False,edgecolor='red',linewidth=2))
    fig.axes.add_patch(plt.Rectangle((Pred_box[0],Pred_box[1]),Pred_box[2]-Pred_box[0],Pred_box[3]-Pred_box[1],fill=False,edgecolor='blue',linewidth=2))
    plt.show()
    print(iou(True_box,Pred_box))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值