计算交并比:交的面积除以并的面积。
要求矩形框的长和宽应该平行于图片框。不然不能用这样的公式计算。
原理,从一维上来理解:两条红线的距离之和减去黑色线之间的距离就是相交的距离。两条红线之和很容易算,两条黑线之间的距离就是最小的起点到到最大的末点,最小的起点好算,最大的末点就是两点加上各自长度之后的最大值。这就算出了一维的情况,二维的情况一样,计算二次而已。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/york1996/article/details/92079129