python计算二维矩形IOU实例

yipeiwu_com6年前Python基础

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

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

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

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设计】。

相关文章

python使用super()出现错误解决办法

python使用super()出现错误解决办法 当我们在python的子类中调用父类的方法时,会用到super(),不过我遇到了一个问题,顺便记录一下。 比如,我写了如下错误代码:...

Python手机号码归属地查询代码

Python手机号码归属地查询代码

简单的一个例子,是以前用Dephi写的,前不久刚实现了一个在Python中使用Delphi控件来编写界面程序,于是趁热写一个类似的的查询方案。 本实例是通过www.ip138.com这...

Python实现的删除重复文件或图片功能示例【去重】

Python实现的删除重复文件或图片功能示例【去重】

本文实例讲述了Python实现的删除重复文件或图片功能。分享给大家供大家参考,具体如下: 通过python爬虫或其他方式保存的图片文件通常包含一些重复的图片或文件, 通过下面的pytho...

python numpy 部分排序 寻找最大的前几个数的方法

如下所示: import numpy as np K=4 a = np.array([0, 8, 0, 4, 5, 8, 8, 0, 4, 2]) a[np.argpartition...

python数据类型判断type与isinstance的区别实例解析

在项目中,我们会在每个接口验证客户端传过来的参数类型,如果验证不通过,返回给客户端“参数错误”错误码。 这样做不但便于调试,而且增加健壮性。因为客户端是可以作弊的,不要轻易相信客户端传过...