Giou简洁算法

def Giou(rect_a, rect_b):  
    ax0, ay0, ax1, ay1 = rect_a   #a框坐标
    bx0, by0, bx1, by1 = rect_b   #b框坐标

#外框就是包含a与b的最小矩形
    outx0 = min(ax0, bx0)        #外框x0
    outx1 = max(ax1, bx1)        #外框x1
    outy0 = min(ay0, by0)        #外框y0
    outy1 = max(ay1, by1)        #外框y1

    aw = ax1 - ax0        #a框宽
    ah = ay1 - ay0
    bw = bx1 - bx0
    bh = by1 - by0



    out_w = (outx1 - outx0)       #外框宽
    out_h = (outy1 - outy0)

    a_s = aw * ah                  #a面积
    b_s = bw * bh

    inter_w = max(aw + bw - out_w, 0)        #a、b重叠框宽

    inter_h = max(ah + bh - out_h, 0)

    inter_s = inter_w * inter_h        #a、b重叠框面积

    out_s = out_w * out_h

    u = a_s +b_s - inter_s              #a并b面积

    ##    print("交集",inter_s)
    ##    print("并集",u)
    ##    print("补cc:",out_s-u)
    ##    print("外框面积:",out_s)

    giou = inter_s / u - (out_s - u) / out_s

    return giou
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值