在实际的应用中,常常需要将检测到的轮廓用多边形来表示,主要涉及到以下函数。
1、返回外部矩形边界:boundingRect()函数
此函数计算并返回指定点集最外面的矩形边界。
Rect boundingRect(InputArray points)
函数的输入是二维的点集,可以是std::vector或Mat类型。
2、寻找最小包围矩形:minAreaRect()函数
此函数对于给定的2D点集,寻找可旋转的最小面积的包围矩形。
RotatedRect minAreaRect(InputArray points)
函数的输入是二维的点集,可以是std::vector或Mat类型。
3、寻找最小包围原圆形:minEnclosingCircle()函数
minEnclosingCircle()函数的功能是利用迭代算法,对给定的2D点集,寻找面积最小的可包围它们的圆形。
void minEnclosingCircle(InputArray points, Point2f& center,float& radius)
- 第一个参数;二维的点集,可以是std::vector或Mat类型。
- 第二个参数:圆的输出圆心。
- 第三个参数:圆的输出半径。
- 3、用椭圆拟合二维点集:fitEllipse()函数
此函数的作用是用椭圆拟合二维点集。
RotatedRect filEllipse(InputArray points)
输入是二维的点集,可以是std::vector或Mat类型。
4、逼近多边形曲线:approxPolyDP()函数
approxPolyDP()函数的作用是用指定精度逼近多边形曲线。
void appapproxPolyDP(InputArray curve, OutputArray approxCurve, double epsilon, bool closed)
- 第一个参数:二维的点集,可以是std::vector或Mat类型。
- 第二个参数,多边形的逼近结果,其类型和输入的二维点集类型一致。
- 第三个参数:double类型的epsilon,逼近的精度,是原始曲线和近似曲线之间的最大值。
- 第四个参数:bool类型的closed,如果其为真,则曲线是封闭曲线,否则不封闭。