cv2.fitEllipse如何处理旋转方面的宽度/高度?

时间:2016-08-14 19:11:03

标签: python opencv ellipse data-fitting

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

cv2.fitEllipse如何处理这个?它是否以某种标准化形式返回椭圆(即选择角度使得宽度始终为< height),还是可以提供任何输出?

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

2 个答案:

答案 0 :(得分:3)

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

如果宽度大于高度,则交换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);
}

答案 1 :(得分:0)

根据经验,我运行了匹配数千个省略号的代码,并且我从未得到一个返回值,返回的宽度大于返回的高度。所以似乎OpenCV将椭圆标准化为height >= width