计算两个矩形的交并比,通常在检测任务里面可以作为一个检测指标。你的预测bbox和groundtruth之间的差异,就可以通过IOU来体现。

#!/usr/bin/env python

# encoding: utf-8

import numpy as np

'''

函数说明:计算两个框的重叠面积

输入:

rec1 第一个框xmin ymin xmax ymax

rec2 第二个框xmin ymin xmax ymax

输出:

iouv 重叠比例 0 没有

'''

def compute_iou(rec1, rec2):

# computing area of each rectangles

S_rec1 = (rec1[2] - rec1[0]) * (rec1[3] - rec1[1]) # H1*W1

S_rec2 = (rec2[2] - rec2[0]) * (rec2[3] - rec2[1]) # H2*W2

# computing the sum_area

sum_area = S_rec1 + S_rec2 #总面积

# find the each edge of intersect rectangle

left_line = max(rec1[0], rec2[0])

right_line = min(rec1[2], rec2[2])

top_line = max(rec1[1], rec2[1])

bottom_line = min(rec1[3], rec2[3])

# judge if there is an intersect

if left_line >= right_line or top_line >= bottom_line:

#print("没有重合区域")

return 0

else:

#print("有重合区域")

intersect = (right_line - left_line) * (bottom_line - top_line)

iouv=(float(intersect) / float(sum_area - intersect))*1.0

return iouv

'''

函数说明:获取两组匹配结果

输入:

rectA 车位

rectB 车辆

threod 重叠面积最小数值界限 默认0.6

输出:

CarUse 一维数组保存是否占用 1 占用 0 没有

'''

def TestCarUse(rectA,rectB,threod=0.6,debug=0):

#threod=0.8#设定最小值

ALength=len(rectA)

BLength=len(rectB)

#创建保存匹配结果的矩阵

recIOU=np.zeros((ALength,BLength),dtype=float,order='C')

#用于记录车位能够使否占用

CarUse=np.zeros((1,ALength),dtype=int,order='C')

for i in range(0,ALength):

for j in range(0,BLength):

iou = compute_iou(rectA[i], rectB[j])

recIOU[i][j]=format(iou,'.3f')

if iou>=threod:

CarUse[0,i]=1 #有一个超过匹配认为车位i被占用

if debug==1:

print('----匹配矩阵----')

print(recIOU)

'''

print('----车位占用情况----')

for i in range(0,ALength):

msg='车位'+str(i)+"-"+str(CarUse[0][i])

print(msg)

'''

return CarUse

if __name__=='__main__':

#A代表车位

rectA1 = (30, 10, 70, 20)

rectA2 = (70, 10, 80, 20)

rectA =[rectA1,rectA2]

#B代表检测车辆

rectB1 = (20, 10, 35, 20)

rectB2 = (30, 15, 70, 25)

rectB3 = (70, 10, 80, 20)

rectB =[rectB1,rectB2,rectB3]

#获取车位占用情况 rectA车位 rectB车辆 0.6占面积最小比

CarUse=TestCarUse(rectA,rectB,0.6,1)

print('----车位占用情况----')

for i in range(0,len(CarUse)+1):

msg='车位'+str(i)+"-"+str(CarUse[0][i])

print(msg)

python 图像iou_python实现IOU计算相关推荐

  1. python 图像iou_Python MTCNN(人脸检测)项目附代码讲解(2)-NMS/IOU工具介绍

    对于MTCNN中使用的原理工具,这一节分为代码的三部分(NMS,IOU,框的改变),对于图像金字塔.三个网络(R.P.ONET)和数据集的处理部分放在模型搭建中来讲,要不突然讲起来感觉太虚空,没办法很 ...

  2. python怎么计算图像梯度_opencv python图像梯度实例详解

    这篇文章主要介绍了opencv python图像梯度实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一阶导数与Soble算子 二阶导数与拉普 ...

  3. python绘制四边形_python shapely.geometry.polygon任意两个四边形的IOU计算实例

    在目标检测中一个很重要的问题就是NMS及IOU计算,而一般所说的目标检测检测的box是规则矩形框,计算IOU也非常简单,有两种方法: 1. 两个矩形的宽之和减去组合后的矩形的宽就是重叠矩形的宽,同比重 ...

  4. python图片截取斜四边形_python shapely.geometry.polygon任意两个四边形的IOU计算实例...

    在目标检测中一个很重要的问题就是NMS及IOU计算,而一般所说的目标检测检测的box是规则矩形框,计算IOU也非常简单,有两种方法: 1. 两个矩形的宽之和减去组合后的矩形的宽就是重叠矩形的宽,同比重 ...

  5. matlab实现iou计算,python实现IOU计算案例

    计算两个矩形的交并比,通常在检测任务里面可以作为一个检测指标.你的预测bbox和groundtruth之间的差异,就可以通过IOU来体现.很简单的算法实现,我也随便写了一个,嗯,很简单. 1. 使用时 ...

  6. python中geometry_python shapely.geometry.polygon任意两个四边形的IOU计算实例

    在目标检测中一个很重要的问题就是NMS及IOU计算,而一般所说的目标检测检测的box是规则矩形框,计算IOU也非常简单,有两种方法: 1. 两个矩形的宽之和减去组合后的矩形的宽就是重叠矩形的宽,同比重 ...

  7. 倾斜矩形框的IOU计算与Python实现

    参考倾斜矩形框的IOU计算与Python实现 - 云+社区 - 腾讯云 其算法流程大致如下: 给定两个倾斜的矩形 1. 首先设置点集: 2. 将两个矩形的交点均加入至 中: 3. 接着将矩形包含在中的 ...

  8. 【Tool】Augmentor和imgaug——python图像数据增强库

    Augmentor和imgaug--python图像数据增强库 Tags: ComputerVision Python 介绍两个图像增强库:Augmentor和imgaug,Augmentor使用比较 ...

  9. python图像增强_【Tool】Augmentor和imgaug——python图像数据增强库

    Augmentor和imgaug--python图像数据增强库 Tags: ComputerVision Python 介绍两个图像增强库:Augmentor和imgaug,Augmentor使用比较 ...

最新文章

  1. 029 浏览器不能访问虚拟机的问题解决
  2. DL之LiRDNNCNN:利用LiR、DNN、CNN算法对MNIST手写数字图片(csv)识别数据集实现(10)分类预测
  3. GIS+=地理信息+容器技术(4)——Docker执行
  4. JDK并发包-同步控制
  5. MOSS 2010 实现域账户 组员在线交流 Live Chat
  6. 运维人员打字耍不要快_法考经验与教训 —— 打字
  7. SoyNet:大豆叶部病害分类(研究思路清晰)
  8. 0字符串 if mapper test_降龙-第20章:Mapper解析
  9. 惠普打印机驱动服务器系统,在打印机服务器(系统WIN2003)上安装了HP5100 打印机,客户机系统WIN7 64位,现没法添加HP5100的驱动...
  10. 虚拟机VMware插入U盘操作系统崩溃死机的解决方法
  11. 探究空心超顺磁性四氧化三铁纳米微粒的制备方法-瑞禧
  12. c语言循环语循环控制,C语言.控制语循环语句.ppt
  13. 计算机科班Java开发好书推荐
  14. 5月9日机构对金融市场观点汇总
  15. 项目实战 |根据找到的variants的结果生成突变矩阵
  16. canvas之-------水滴扩散特效
  17. windows平台 VS2017 live555 rtsp推流服务器编译
  18. 134.如何进行实时计算
  19. 6、http客户端httpie工具
  20. gis data editor.php,我们的漏洞Webug 3.0中级进阶攻略(上)

热门文章

  1. java抽象 继承 多态 接口
  2. Android学习(一)
  3. iframe属性含义
  4. 从古看今,为何JAVA能够如此流行?
  5. 为什么Java是企业家的首选?
  6. 第148天学习打卡(Kubernetes kubeadm init 成功部署 部署网络插件 部署容器化应用)
  7. openstack云计算平台 4(镜像封装、块存储服务)
  8. Windows定时自动关闭所有程序
  9. AirDisk存宝 NAS系列的设备使用须知
  10. chrome浏览器插件_JSON-handle(0.0.1.3)转载自http://www.chromein.com/crx_12022.html