旋转框目标检测————关于旋转框定义和解决方案

本文探讨了如何表示旋转框,特别是在OpenCV中使用cv2.minAreaRect函数时遇到的角度范围问题。该函数返回不规则四边形的最小外接矩形,并在不同版本中对宽边定义有所变化。在OpenCV 4.2版本中,宽边是逆时针旋转最先重合的边,而在4.5版本中,宽边则变为顺时针旋转最先重合的边。文章还提供了旋转矩形坐标转换的实现方法,并讨论了不同表示法之间的转换关系。

1、旋转框表示

1、如何表示一个旋转框?

首先,在标签生成的时候,我们就会直面一个现实的问题?旋转框应该如何表示?
事实上,虽然我们说了可以使用5个值 [公式] 来表示一个旋转框( [公式] )特别指代框的中心位置,但是注意到这个的框表示其实有个bug: 一个框的表示不是唯一的。比如下面这张图,当我们把不同的边作为高和宽的时候,计算出来的角度也会随之发生变化(按照惯例,我们一般把逆时针旋转的角度视为负值)
在这里插入图片描述

2、Opencv表示法

关于不同版本opencv的cv2.minAreaRect函数输出角度范围不同的问题。
在做旋转矩形⽬标检测时碰到⼀个问题,我所使⽤的数据集的标签为不规则四边形的四个点的坐标(x1,y1,x2,y2,x3,y3,x4,y4),要将其转化为旋转⽬标检测的标签(x,y,longside,shortside,angle)。其中,需要⽤到opencv中的cv2.minAreaRect函数。
cv2.minAreaRect函数的作⽤是返回不规则四边形的最⼩外接矩形(能不能返回多边形的最⼩外接矩形没有验证)
备注:cv2.boxPoints函数可以根据cv2.minAreaRect函数的返回值给出最⼩外接矩形的四点坐标
为了更⽅便的进⾏可视化说明,我们先定义两个函数draw_rect和rotate_rect

import numpy as np
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值