当前位置:网站首页>旋转框目标检测————关于旋转框定义和解决方案
旋转框目标检测————关于旋转框定义和解决方案
2022-06-21 23:43:00 【qq_41627642】
1、旋转框表示
1、如何表示一个旋转框?
![首先,在标签生成的时候,我们就会直面一个现实的问题?旋转框应该如何表示? 事实上,虽然我们说了可以使用5个值 [公式] 来表示一个旋转框( [公式] )特别指代框的中心位置,但是注意到这个的框表示其实有个bug: 一个框的表示不是唯一的。比如下面这张图,当我们把不同的边作为高和宽的时候,计算出来的角度也会随之发生变化(按照惯例,我们一般把逆时针旋转的角度视为负值)](/img/61/630d93c376b139e338ed01ae60d7a9.png)

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
import cv2
import matplotlib.pyplot as plt
defdraw_rect(rect):
在
画布上画矩形
#
im
rect
im = np.zeros([240,320], dtype = np.uint8)
cv2.polylines(im,[rect],1,255)
plt.imshow(im)
plt.show()
defrotate_rect(rect, angle):
输出
旋转后的矩形四个点的坐标,
为正及顺时针旋转,为负及逆时针旋转
#
rect
angle
(x,y),(w,h),a = cv2.minAreaRect(rect)
rect_r =((x,y),(w,h), a+angle)
return cv2.boxPoints(rect_r).astype(np.int32
关于cv2.minAreaRect
输⼊:四边形的四个点(不要求顺序)
输出:最⼩外接矩形的中⼼点坐标x,y,宽⾼w,h,⾓度anlge,输出形式为元组((x,y),(w,h),anlge),顺序格式不变
中⼼点坐标x,y⽐较容易理解
宽w的定义在4.2和4.5有区别,具体是哪个版本没有确定
1、opencv4.2版本(Doc)
OpenCV在版本4.5.1之前,表示形式为 [公式] ,示意图如下
**其中4.2版本的定义为,x轴逆时针旋转最先重合的边为w,此时x轴逆时针旋转的⾓度为-angle(负号没错)
具体解释为:旋转矩形rect有两条边L和S(分别为长边和短边),x轴逆时针旋转,如果最先与L边重合(也可以理解为平⾏),那么L就是
Opencv format: x_c y_c width height Θ
参数介绍:
x_c与y_c:旋转矩形框的中心坐标;
width:x轴逆时针旋转碰到矩形的第一条边;
height:与width对应的另一边;
Θ:x轴逆时针旋转与width的夹角,由于原点位于图像的左上角,逆时针旋转角度为负 ,Θ∈[-90, 0)
2、opencv4.5版本((Doc’))
4.5版本定义为,x轴顺时针旋转最先重合的边为w,angle为x轴顺时针旋转的⾓度,angle取值为(0,90]

3、长边定义法1(Dle)

4、长边定义法2((Dle’))

5、表示法之间的转换关系
关于旋转框定义的一些理解和感想
基于MMRotate训练自定义数据集 做旋转目标检测 2022-3-30




边栏推荐
猜你喜欢

RISCV 的 cache

note

Getting started with go web programming: validators

You have a chance, here is a stage

Lecture 3 of Data Engineering Series: characteristic engineering of data centric AI

珂朵莉树 范围查询 chtholly tree Old driver tree

Im instant messaging source code + software +app with detailed package video building tutorial
![[taro] the solution of taro wechat applet input focusing the cursor incorrectly on the Apple phone](/img/67/6f46d415475d024950e2502c1f5dc2.png)
[taro] the solution of taro wechat applet input focusing the cursor incorrectly on the Apple phone

buuctf misc zip

Go Web 编程入门:验证器
随机推荐
You have a chance, here is a stage
Xshell连接虚拟机只能输入public key解决方案【亲测】
Mathematical knowledge: number of approximations - approximations
关于一次Web线下面试的思考
The data magician tells you how far is the integer programming copt5.0 from CPLEX?
Getting started with go web programming: validators
Eslint: error
Acwing game 56
在terminal拷贝粘贴,多了0~与1~字符
Importance of data governance
Go技术日报(2022-06-20)——Go:简单的优化笔记
[roarctf2019] gold 6 years
过孔式导电滑环怎么用
一文读懂LiveData 粘性事件
Document.readyState 如何使用和侦听
你有一个机会,这里有一个舞台
力扣每日一题-第24天-485.最大连续1的个数
note
如何判断一个男人将来是穷还是富?
Bit operation bit and