宽度为50,高度为100且角度为0的椭圆与宽度为100,高度为50,角度为90的椭圆相同 - 即一个是另一个的旋转。
cv2.fitEllipse如何处理这个?它是否以某种标准化形式返回椭圆(即选择角度使得宽度始终为< height),还是可以提供任何输出?
我问我正在试图确定两个合适的椭圆是否相似,并且我不确定是否必须考虑这些事情。文档根本没有解决这个问题。
答案 0 :(得分:3)
您可以在OpenCV源代码中看到fitEllipse椭圆的高度始终大于宽度。
如果宽度大于高度,则交换width
和height
,并更正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);
}
答案 1 :(得分:0)
根据经验,我运行了匹配数千个省略号的代码,并且我从未得到一个返回值,返回的宽度大于返回的高度。所以似乎OpenCV将椭圆标准化为height >= width
。