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

相关文章

Windows下的Jupyter Notebook 安装与自定义启动(图文详解)

Windows下的Jupyter Notebook 安装与自定义启动(图文详解)

【听图阁-专注于Python设计】小编注:如果不是特殊需要建议安装 Anaconda3 即可,自带Jupyter Notebook 。 手动安装之前建议查看这篇文章:/post/1351...

详解numpy矩阵的创建与数据类型

详解numpy矩阵的创建与数据类型

Numpy是python常用的一个类库,在python的使用中及其常见,广泛用在矩阵的计算中,numpy对矩阵的操作与纯python比起来速度有极大的差距。 一、 构造矩阵 矩阵的构造...

Django MEDIA的配置及用法详解

Django MEDIA的配置及用法详解

如果需要在数据库中存储图片或视频类的数据,我们可以配置MEDIA. 下面的示例将以上传一张图片的形式来说明MEDIA的配置及用法. 第一步 settings.py # media配置...

python并发编程之多进程、多线程、异步和协程详解

最近学习python并发,于是对多进程、多线程、异步和协程做了个总结。 一、多线程 多线程就是允许一个进程内存在多个控制权,以便让多个函数同时处于激活状态,从而让多个函数的操作同时运行...

python开发环境PyScripter中文乱码问题解决方案

PyScripter看起来还是挺不错的一个python ide 环境: PyScripter 2.6.0.0 python3.4 问题: PyScripter有个小坑,打开文件后中文都成...