学习OpenCV:minAreaRect与RotatedRect

minAreaRect:返回指定点集的带方向的最小外接矩形,数据类型为RotatedRect,其中返回的角度θ范围为(-90°,0°]。

如果需要将θ限制在(-45°,45°],如:获取到角度-80°时,后面流程我需要的是顺时针旋转10°,如果直接使用是逆时针旋转80°,可参考以下实现,使输出为10°。

其中逆时针旋转角度为负,顺时针旋转角度为正。

	RotatedRect rect = minAreaRect(conMinArea);
	float fAngle = rect.angle;//θ∈(-90度,0]
	if (fAngle < -45)
		fAngle = 90 + fAngle;

一般地,RotatedRect中,逆时针旋转时角度递增,输入角度值可以超过360°,注意width与height不是按照长短来定义的。

 获取RotatedRect格式的四个顶点坐标代码如下:

Point2f* vertices = new cv::Point2f[4];
RotatedRect rect = RotatedRect(Point2f(800, 2000), Size2f(10, 1000), 90);
rect.points(vertices);
for (int j = 0; j < 4; j++)
	line(imgShow, vertices[j], vertices[(j + 1) % 4], cv::Scalar(255, 10, 0));//逐条边绘制旋转矩形

猜你喜欢

转载自blog.csdn.net/Stone_Wang_MZ/article/details/108473549