【问题标题】:How does cv2.fitEllipse handle width/height with regards to rotation?cv2.fitEllipse 如何处理旋转的宽度/高度?
【发布时间】:2016-12-21 02:30:52
【问题描述】:

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

cv2.fitEllipse 如何处理这个问题?它是否以某种规范化形式返回椭圆(即选择角度使得宽度始终为

当我试图确定两个拟合椭圆是否相似时,我问我是否必须考虑这些事情。文档根本没有解决这个问题。

【问题讨论】:

标签: python opencv ellipse data-fitting


【解决方案1】:

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

如果宽度大于高度,则交换widthheight,并更正anglebox 是定义椭圆的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);
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-12
      • 1970-01-01
      • 2018-09-08
      • 1970-01-01
      • 1970-01-01
      • 2014-12-31
      • 1970-01-01
      相关资源
      最近更新 更多