python 图像iou_openCV——裁剪人的图片及iou自适应标签

该博客介绍了如何利用Python和OpenCV计算IoU(Intersection Over Union),并应用其裁剪含有指定目标的图像,同时进行IoU自适应的标签匹配。通过读取标注文件,找出最佳匹配的框,并将结果用于图像抠图和生成新的标注文件。
摘要由CSDN通过智能技术生成

import os

import cv2

import numpy as np

def IOU( box1, box2 ):

"""

: box1:[x1,y1,x2,y2]

: box2:[x1,y1,x2,y2]

# todo 1. 说明此函数的功能

2. 修改函数名称和返回值的名字,因为这不是真正的 IOU

"""

width1 = abs(box1[2] - box1[0])

height1 = abs(box1[1] - box1[3]) # 这里y1-y2是因为一般情况y1>y2,为了方便采用绝对值

width2 = abs(box2[2] - box2[0])

height2 = abs(box2[1] - box2[3])

x_max = max(box1[0],box1[2],box2[0],box2[2])

y_max = max(box1[1],box1[3],box2[1],box2[3])

x_min = min(box1[0],box1[2],box2[0],box2[2])

y_min = min(box1[1],box1[3],box2[1],box2[3])

iou_width = x_min + width1 + width2 - x_max

iou_height = y_min + height1 + height2 - y_max

if iou_width <= 0 or iou_height <= 0:

iou = 0

else:

iou_area = iou_width * iou_height # 交集的面积

# box1_area = width1 * height1

box2_area = width2 * height2

iou = iou_area / box2_area # 并集的面积

# if iou <= 0.6:

# iou = False

# else:

# iou = True

return iou

if __name__ == "__main__":

s

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值