opencv-python 详解cv2.minAreaRect(cnt)函数返回的Box2D结构

本文介绍了如何使用OpenCV的cv2.minAreaRect()函数找到轮廓的最小外接矩形,并通过cv2.boxPoints()获取其四个顶点。Box2D结构包含了中心点、尺寸和旋转角度信息。通过cv2.boxPoints()转换,可以得到外接矩形的顶点坐标,便于在图像上绘制。
摘要由CSDN通过智能技术生成

作者:RayChiu_Labloy
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处


函数cv2.minAreaRect(cnt)是cv2.findContours()找轮廓函数返回轮廓数组后,绘制每个轮廓的最小外接矩形的方法。详解请看我的另两篇文章:
        https://mp.csdn.net/mp_blog/creation/editor/119903415
        https://mp.csdn.net/mp_blog/creation/editor/119892630 

minAreaRect函数返回的是一个叫Box2D 结构,举一个输出的Box2D的例子:

((81.0,288),(22.0,10.0),-0.0);

其表示的意义是(中心点坐标,(宽度,高度),旋转的角度)

官方解释如下:

  • center: The rectangle mass center.
  • size: Width and height of the rectangle.
  • angle: The rotation angle in a clockwise direction. When the angle is 0,90.180,270 etc, the rectangle becomes an up-right rectangle.

 如上图的红色矩形框框起来的就是minAreaRect函数返回的Box2D结构元素,

那么如何取到最新外接矩形框(绿色)的四个顶点呢?

用cv2.boxPoints(rect)函数转换即可:

rect = cv2.minAreaRect(cnt) # 最小外接矩形 
box = np.int0(cv2.boxPoints(rect)) # 矩形的四个角点取整

 box就是上图中蓝色椭圆框框起来的几个顶点集合。

  • 上述数组中索引0的点位置真心不一定在哪个位置(网上的说法有时候很坑),实测一下就知道了,我自己测试的出现在左上方和左下方,感觉和矩形角度有关系。
  • 从索引0的顶点开始,顺时针方向,依次为1,2,3索引点。
  • 索引0和索引3之间为矩形的width,索引0和索引1之间为矩形的height。
  • 角度θ即是水平轴逆时针旋转到 索引0和索引3所在边 之间的夹角。

【如果对您有帮助,交个朋友给个一键三连吧,您的肯定是我博客高质量维护的动力!!!】 

  • 18
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值