处理 cv::RotatedRect 宽度和高度

Gru*_*mot 5 opencv

我需要从它的 4 个角定义一个旋转的矩形。旋转的矩形由中心点、大小对(宽度、高度)和角度定义。

如何确定哪个尺寸是高度,哪个是宽度?

宽度不是最水平边的长度,是吗?例如,如果角度大于 90°,它会交换吗?

Mik*_*iki 4

height应该是最大的一边,width是另一条边,angle是顺时针方向的旋转角度(以度为单位)。

否则,您可以得到一个等效的矩形,将heightwidth交换,旋转 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;
}
Run Code Online (Sandbox Code Playgroud)