对给定的 2D 点集,寻找最小面积的包围矩形,使用函数:
points
-
点序列或点集数组
storage
-
可选的临时存储仓
-
函数 cvMinAreaRect2 通过建立凸外形并且旋转外形以寻找给定 2D 点集的最小面积的包围矩形。
其中返回的2D盒子定义如下:
注意夹角 angle 是水平轴逆时针旋转,与碰到的第一个边(不管是高还是宽)的夹角。如下图
![](https://i-blog.csdnimg.cn/blog_migrate/0af688340e8c5b20d6b300f45ac982eb.gif)
可用函数 cvBoxPoints(box[count], point); 寻找盒子的顶点
简单证明此函数的计算公式:
计算x,由图可以得到三个方程式:
pt[1].x - pt[0].x = width*sin(angle)
pt[2].x - pt[1].x = height*cos(angle)
pt[2].x - pt[0].x = 2(box.center.x - pt[0].x)
联立方程可解得函数里的计算式,算 y 略。
写了个函数绘制CvBox2D