2DBox和3DBox和旋转Box的iou计算
序言
面试过程中遇到的问题,如何对2Dbox、3Dbox和旋转box求iou。
2D Box计算代码
def cal_2dbox(box1, box2):"""box format: xyxy"""x1 = max(box1[0], box2[0])y1 = max(box1[1], box2[1])x2 = min(box1[2], box2[2])y2 = min(box1[3], box2[3])union = (x2 - x1) * (y2 - y1)area1 = (box1[2]-box1[0]) * (box1[3]-box1[1])area2 = (box2[2]-box2[0]) * (box2[3]-box2[1])iou = union/(area1+area2-union)return iou
3D Box计算代码
def cal_2dbox(box1, box2):"""box format: xyxy"""x1 = max(box1[0], box2[0])y1 = max(box1[1], box2[1])x2 = min(box1[2], box2[2])y2 = min(box1[3], box2[3])union = (x2 - x1) * (y2 - y1)area1 = (box1[2]-box1[0]) * (box1[3]-box1[1])area2 = (box2[2]-box2[0]) * (box2[3]-box2[1])iou = union/(area1+area2-union)return iou
旋转 Box计算代码
def cal_skewbox(box1, box2):"""box format: cxcywh angle"""area1 = box1[2]*box1[3]area2 = box2[2]*box2[3]box1_inp = ((box1[0], box1[1]), (box1[2], box1[3]), box1[4])box2_inp = ((box2[0], box2[1]), (box2[2], box2[3]), box2[4])int_pts = cv2.rotatedRectangleIntersection(tuple(box1_inp), tuple(box2_inp))[1]#order_pts = cv2.convexHull(int_pts, returnPoints=True)union = cv2.contourArea(int_pts)iou = union/(area1+area2-union)return iou
结果
if __name__ == "__main__":#2Dbox1_2d = [50, 100, 100, 200]box2_2d = [50, 50, 100, 200]iou_2d = cal_2dbox(box1_2d, box2_2d)print("二维box的计算结果:", iou_2d)#3Dbox1_3d = [50, 100, 30, 100, 200, 60]box2_3d = [50, 50, 30, 100, 200, 90]iou_3d = cal_3dbox(box1_3d, box2_3d)print("三维box的计算结果:", iou_3d)#skewbox1_skew = [50, 100, 100, 200, 0]box2_skew = [50, 100, 100, 200, 90]iou_skew = cal_skewbox(box1_skew, box2_skew)print("旋转box的计算结果:", iou_skew)
终端结果:
二维box的计算结果: 0.6666666666666666
三维box的计算结果: 0.3333333333333333
旋转box的计算结果: 0.3333333333333333
2DBox和3DBox和旋转Box的iou计算相关推荐
- 计算机视觉:两个旋转检测框bbox的IoU计算
计算机视觉:两个旋转检测框bbox的IoU计算 IoU简介 两个旋转检测框bbox的IoU计算 IoU简介 在目标检测中,经常会使用到IoU.IoU 的全称为交并比(Intersection over ...
- [CV] Rotated IoU 计算旋转矩形之间的重叠面积
[CV] Rotated IoU 计算旋转矩形之间的重叠面积 文章目录 [CV] Rotated IoU 计算旋转矩形之间的重叠面积 简介 旋转包围盒的编码方式 矢量的旋转公式 包围盒转化为角点 代码 ...
- python绘制四边形_python shapely.geometry.polygon任意两个四边形的IOU计算实例
在目标检测中一个很重要的问题就是NMS及IOU计算,而一般所说的目标检测检测的box是规则矩形框,计算IOU也非常简单,有两种方法: 1. 两个矩形的宽之和减去组合后的矩形的宽就是重叠矩形的宽,同比重 ...
- yolov3前向传播(三)-- 坐标转换,iou计算,权重加载,图片显示
坐标转换,iou计算,权重加载,图片显示 一.坐标转换 1.分析 2.实现 # =====================================坐标值转化函数================ ...
- python图片截取斜四边形_python shapely.geometry.polygon任意两个四边形的IOU计算实例...
在目标检测中一个很重要的问题就是NMS及IOU计算,而一般所说的目标检测检测的box是规则矩形框,计算IOU也非常简单,有两种方法: 1. 两个矩形的宽之和减去组合后的矩形的宽就是重叠矩形的宽,同比重 ...
- python中geometry_python shapely.geometry.polygon任意两个四边形的IOU计算实例
在目标检测中一个很重要的问题就是NMS及IOU计算,而一般所说的目标检测检测的box是规则矩形框,计算IOU也非常简单,有两种方法: 1. 两个矩形的宽之和减去组合后的矩形的宽就是重叠矩形的宽,同比重 ...
- 车流量检测实现:多目标追踪、卡尔曼滤波器、匈牙利算法、SORT/DeepSORT、yoloV3、虚拟线圈法、交并比IOU计算
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) CNN:RCNN.SPPNet.Fast RCNN.Faste ...
- PLC实验—西门子S7 1200读取旋转编码器数据并计算电机转速
PLC实验-西门子S7 1200读取旋转编码器数据并计算电机转速 注意PTO控制步进电机实验博途软件需要V14版本,不然没有PTO功能块 软件的下载请点击下方百度网盘的链接 链接:https://pa ...
- matlab实现iou计算,python实现IOU计算案例
计算两个矩形的交并比,通常在检测任务里面可以作为一个检测指标.你的预测bbox和groundtruth之间的差异,就可以通过IOU来体现.很简单的算法实现,我也随便写了一个,嗯,很简单. 1. 使用时 ...
最新文章
- 解决Visual Code安装中文插件失败问题
- zookeeper的名词复盘-Watcher
- Android之获取证书文件(pfx格式)的公钥和私钥
- groovy lambda_Java Lambda流和Groovy Clouse的比较
- 实现基于AD的MOSS的FORM认证方式
- 计算机的时代背景,学生计算机论文,关于新时代背景下的中专计算机教学相关参考文献资料-免费论文范文...
- 智能合约语言 Solidity 教程系列5 - 数组介绍
- Learun快速开发平台,一个开源可视化的开发平台
- Spyder单步调试
- 元器件中关于晶体二极管的小小知识 2021-09-07
- 4种Word文档解除密码保护的方法
- [AC自动机]luoguP3966
- 微博上一些有用的话(六)
- 点云特征提取--vfh
- python3 + wxpython 实现RSA加密聊天室
- SSM开发笔记-尚硅谷-佟刚-Spring4.0.0
- MATLAB 2020a的参考安装教程
- dw怎么在框架中加入网页_如何在Dreamweaver中创建框架结构? dw设置框架结构的教程...
- react-player一个很好用的直播组件,可以播放视频等等
- Linux文件服务站
热门文章
- rsync+sersync实时同步数据
- bizhubc226说明书_柯尼卡美能达复印机C226|C266扫描功能设置
- sumatrapdf关闭当前tab快捷键
- 6大Word报告模板 , 这个年底,不再熬夜加班写材料
- 活塞运动c语言编程,动网格的相关知识介绍
- 计算机网络技术电子科技大学出版社答案,计算机网络技术与应用(西安电子科技大学出版社)(2010.9)课后习题参考答案...
- 杰理之ANC 方案开发流程-篇
- 2023 K8s 认证工程师 CKA 考题分析和题库练习(上)
- 基于simulink的FM调制解调系统仿真
- oracle jdbc中文,oracle jdbc