我需要从它的4个角定义一个旋转的矩形.旋转的矩形由中心点,尺寸对(宽度,高度)和角度定义.
如何确定哪个尺寸是高度,哪个是宽度?
宽度不是最水平边缘的长度,是吗?例如.如果角度大于90°,它是否交换?
最佳答案 高度应该是最大的一侧,宽度是另一个,角度是顺时针方向的旋转角度(以度为单位).
否则,您可以获得一个等高的矩形,其高度和宽度交换,旋转90度.
您可以使用minAreaRect查找RotatedRect:
vector<Point> pts = {pt1, pt2, pt3, pt4}
RotatedRect box = minAreaRect(pts);
// Be sure that largest side is the height
if (box.size.width > box.size.height)
{
swap(box.size.width, box.size.height);
box.angle += 90.f;
}