python实现的Iou与Giou代码


Posted in Python onJanuary 18, 2020

最近看了网上很多博主写的iou实现方法,但Giou的代码似乎比较少,于是便自己写了一个,新手上路,如有错误请指正,话不多说,上代码:

def Iou(rec1,rec2):
  x1,x2,y1,y2 = rec1 #分别是第一个矩形左右上下的坐标
  x3,x4,y3,y4 = rec2 #分别是第二个矩形左右上下的坐标
  area_1 = (x2-x1)*(y1-y2)
  area_2 = (x4-x3)*(y3-y4)
  sum_area = area_1 + area_2
  w1 = x2 - x1#第一个矩形的宽
  w2 = x4 - x3#第二个矩形的宽
  h1 = y1 - y2
  h2 = y3 - y4
  W = min(x1,x2,x3,x4)+w1+w2-max(x1,x2,x3,x4)#交叉部分的宽
  H = min(y1,y2,y3,y4)+h1+h2-max(y1,y2,y3,y4)#交叉部分的高
  Area = W*H#交叉的面积
  Iou = Area/(sum_area-Area)
  return Iou

def Giou(rec1,rec2):
  x1,x2,y1,y2 = rec1 #分别是第一个矩形左右上下的坐标
  x3,x4,y3,y4 = rec2
  iou = Iou(rec1,rec2)
  area_C = (max(x1,x2,x3,x4)-min(x1,x2,x3,x4))*(max(y1,y2,y3,y4)-min(y1,y2,y3,y4))
  area_1 = (x2-x1)*(y1-y2)
  area_2 = (x4-x3)*(y3-y4)
  sum_area = area_1 + area_2
  w1 = x2 - x1#第一个矩形的宽
  w2 = x4 - x3#第二个矩形的宽
  h1 = y1 - y2
  h2 = y3 - y4
  W = min(x1,x2,x3,x4)+w1+w2-max(x1,x2,x3,x4)#交叉部分的宽
  H = min(y1,y2,y3,y4)+h1+h2-max(y1,y2,y3,y4)#交叉部分的高
  Area = W*H#交叉的面积
  add_area = sum_area - Area #两矩形并集的面积
  end_area = (area_C - add_area)/area_C #(c/(AUB))/c的面积
  giou = iou - end_area
  return giou


rec1 = (27,47,130,90)
rec2 = (30,68,150,110)
iou = Iou(rec1,rec2)
giou = Giou(rec1,rec2)
print("Iou = {},Giou = {}".format(iou,giou))

以上这篇python实现的Iou与Giou代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
自己使用总结Python程序代码片段
Jun 02 Python
浅谈pytorch和Numpy的区别以及相互转换方法
Jul 26 Python
Python2 Selenium元素定位的实现(8种)
Feb 25 Python
Python使用线程来接收串口数据的示例
Jul 02 Python
python面试题之列表声明实例分析
Jul 08 Python
基于Python实现剪切板实时监控方法解析
Sep 11 Python
python实现将视频按帧读取到自定义目录
Dec 10 Python
keras获得model中某一层的某一个Tensor的输出维度教程
Jan 24 Python
Jupyter打开图形界面并画出正弦函数图像实例
Apr 24 Python
Python Http请求json解析库用法解析
Nov 28 Python
python中xlutils库用法浅析
Dec 29 Python
Python游戏开发实例之graphics实现AI五子棋
Nov 01 Python
Python 简单计算要求形状面积的实例
Jan 18 #Python
python实现用类读取文件数据并计算矩形面积
Jan 18 #Python
python不使用for计算两组、多个矩形两两间的iou方式
Jan 18 #Python
浅谈Python3实现两个矩形的交并比(IoU)
Jan 18 #Python
利用setuptools打包python程序的方法步骤
Jan 18 #Python
python计算二维矩形IOU实例
Jan 18 #Python
解决python replace函数替换无效问题
Jan 18 #Python
You might like
在windows iis5下安装php4.0+mysql之我见
2006/10/09 PHP
一步一步学习PHP(4) php 函数 补充2
2010/02/15 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
javascript编程起步(第六课)
2007/02/27 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
2013/11/29 Javascript
百度移动版的url编码解码示例
2014/04/29 Javascript
JS实现很酷的水波文字特效实例
2015/02/26 Javascript
浅谈关于JavaScript API设计的一些建议和准则
2015/06/24 Javascript
使用Bootstrap typeahead插件实现搜索框自动补全的方法
2016/07/07 Javascript
jQuery实现打开页面渐现效果示例
2016/07/27 Javascript
js检查是否关闭浏览器的方法
2016/08/02 Javascript
Bootstrap轮播图学习使用
2017/02/10 Javascript
JS数组交集、并集、差集的示例代码
2017/08/23 Javascript
JS实现常见的查找、排序、去重算法示例
2018/05/21 Javascript
jQuery实现获取form表单内容及绑定数据到form表单操作分析
2018/07/03 jQuery
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
Vue $mount实战之实现消息弹窗组件
2019/04/22 Javascript
Vuex的实战使用详解
2019/10/31 Javascript
分享8个JavaScript库可更好地处理本地存储
2020/10/12 Javascript
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
Python使用CMD模块更优雅的运行脚本
2015/05/11 Python
Python中数字以及算数运算符的相关使用
2015/10/12 Python
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
10招!看骨灰级Pythoner玩转Python的方法
2019/04/15 Python
python字典的常用方法总结
2019/07/31 Python
深入了解Python在HDA中的应用
2019/09/05 Python
Python 如何批量更新已安装的库
2020/05/26 Python
Python如何避免文件同名产生覆盖
2020/06/09 Python
配置H5的滚动条样式的示例代码
2018/03/09 HTML / CSS
联想阿根廷官方网站:Lenovo Argentina
2019/10/14 全球购物
公司酒会致辞
2015/07/30 职场文书
聊聊pytorch测试的时候为何要加上model.eval()
2021/05/23 Python
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android
Python字符串格式化方式
2022/04/07 Python
MySQL数据库查询之多表查询总结
2022/08/05 MySQL