cv2.fitEllipse 如何处理 width/height 的旋转?

How does cv2.fitEllipse handle width/height with regards to rotation?

宽度为 50、高度为 100、角度为 0 的椭圆与宽度为 100、高度为 50、角度为 90 的椭圆相同 - 即一个是另一个的旋转。

cv2.fitEllipse如何处理这个问题?它 return 是某种规范化形式的椭圆(即选择角度时宽度始终小于高度),还是可以提供任何输出?

我问是因为我正在尝试确定两个合适的椭圆是否相似,并且不确定我是否必须考虑这些因素。文档根本没有解决这个问题。

根据经验,我 运行 代码匹配了数千个椭圆,但我从未得到一个 return 值 returned 宽度大于 returned 高度.因此,OpenCV 似乎对椭圆进行了标准化,使得 height >= width.

您可以在fitEllipse的OpenCV源代码中看到,椭圆的高度总是大于宽度。

如果宽度大于高度,则widthheight交换,angle更正。 box是定义椭圆的RotatedRect

if( box.size.width > box.size.height )
{
    float tmp;
    CV_SWAP( box.size.width, box.size.height, tmp );
    box.angle = (float)(90 + rp[4]*180/CV_PI);
}