您的位置:首页 > 编程语言 > Python开发

python计算二维矩形IOU实例

2020-03-11 17:50 1136 查看

计算交并比:交的面积除以并的面积。

要求矩形框的长和宽应该平行于图片框。不然不能用这样的公式计算。

原理,从一维上来理解:两条红线的距离之和减去黑色线之间的距离就是相交的距离。两条红线之和很容易算,两条黑线之间的距离就是最小的起点到到最大的末点,最小的起点好算,最大的末点就是两点加上各自长度之后的最大值。这就算出了一维的情况,二维的情况一样,计算二次而已。

def iou(rect1,rect2):
'''
计算两个矩形的交并比
:param rect1:第一个矩形框。表示为x,y,w,h,其中x,y表示矩形右上角的坐标
:param rect2:第二个矩形框。
:return:返回交并比,也就是交集比并集
'''
x1,y1,w1,h1=rect1
x2,y2,w2,h2=rect2

inter_w=(w1+w2)-(max(x1+w1,x2+w2)-min(x1,x2))
inter_h=(h1+h2)-(max(y1+h1,y2+h2)-min(y1,y2))

if inter_h<=0 or inter_w<=0:#代表相交区域面积为0
return 0
#往下进行应该inter 和 union都是正值
inter=inter_w * inter_h

union=w1*h1+w2*h2-inter
return inter/union

以上这篇python计算二维矩形IOU实例就是小编分享给大家的全部内容了,希望能给大家一个参考

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 二维矩形 IOU