minAreaRect函数
欢迎访问个人网络日志🌹🌹知行空间🌹🌹
1.背景
在做旋转物体检测时,通常期望得到对象的带角度最小面积包围矩形,如下图对卫星图像航空母舰的检测:

若已经获取了对象的轮廓,可以通过OpenCV中的minAreaRect方法获取对象的最小面积包围框。
2.minAreaRect 函数
RotatedRect cv::minAreaRect(InputArray points)
入参
- points 是点的集合,如轮廓
返回值
RotatedRect,带角度的旋转矩形框,其值形如(center(x,y), (width, height), angle of rotation )
center(x,y), (width, height)分别是旋转矩形框中心的坐标和矩形的宽和高。值得注意的是最后一个元素angle of rotation旋转角的定义。旧版本和新版本的定义有些许的差异,具体是以4.5.1为分界,小于4.5.1使用了旧的定义方法,4.5.1及之后都采用了新的旋转角定义方法。具体可见OpenCV GitHub Issue。新旧版本旋转角度的定义如下【图片来自于 mmRotate】:

对于新版的定义,以旋转矩形框y最小,y相等时x最小的点为旋转点,以x轴正方向开始顺时针旋转碰到旋转矩形框第一条边时所转过的角度,旋转重合的第一条边算做width,另一条算做height,其取值范围为 ( 0 , π / 2 ] (0, \pi/2] (0,π/2],当x轴与一条边重合时取 π / 2 \pi/2 π/2。对于旧版的定义,以旋转矩形框y最大,y相等时x最小的点为旋转点, 逆时针方向旋转碰到的第一条边与x轴所成的角,其取值范围为 [ − π / 2 , 0 ) [-\pi/2,0) [−π/2,0)
3.以新版为例
img = np.zeros((300, 500), dtype=np.uint8)
contour = np

本文介绍了OpenCV中minAreaRect函数的使用方法及其在旋转物体检测中的应用。该函数可以找到目标对象的最小面积包围矩形,并详细解释了新旧版本中旋转角度的定义差异。
最低0.47元/天 解锁文章
4766





