宽度为50,高度为100,角度为0的椭圆与宽度为100,高度为50,角度为90的椭圆相同,即其中一个是另一个的旋转。
cv2。fitEllipse处理这个?它是否以某种规范化形式返回椭圆(例如,选择角度使宽度始终为<高度),或者它可以提供任何输出?>
当我试图确定两个适合的椭圆是否相似时,我问,我不确定我是否必须考虑这些事情。文档根本没有解决这个问题。
你可以看到在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);
}
根据经验,我运行了匹配数千个省略号的代码,并且我从来没有得到一个返回值,其中返回的宽度大于返回的高度。因此,OpenCV似乎规范化了椭圆,使height >= width
.