Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

fitEllipse - angle of rotated rect

I It seems that fitEllipse realization miss angle computing in some cases.

...
box.center.x = (float)rp[0] + c.x;
box.center.y = (float)rp[1] + c.y;
box.size.width = (float)(rp[2]*2);
box.size.height = (float)(rp[3]*2);
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);
}
if( box.angle < -180 )
    box.angle += 360;
if( box.angle > 360 )
    box.angle -= 360;

return box;

If box.size.width <= box.size.height the angle of rotated rect would be indefinite. Please correct me, if I am wrong.

fitEllipse - angle of rotated rect

I It seems that fitEllipse realization miss the angle computing in some cases.

...
box.center.x = (float)rp[0] + c.x;
box.center.y = (float)rp[1] + c.y;
box.size.width = (float)(rp[2]*2);
box.size.height = (float)(rp[3]*2);
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);
}
if( box.angle < -180 )
    box.angle += 360;
if( box.angle > 360 )
    box.angle -= 360;

return box;

If box.size.width <= box.size.height the angle of rotated rect would be indefinite. Please correct me, if I am wrong.

fitEllipse - angle of resulting rotated rect

It seems that fitEllipse realization miss the result RotatedRect angle computing in some cases.

...
box.center.x = (float)rp[0] + c.x;
box.center.y = (float)rp[1] + c.y;
box.size.width = (float)(rp[2]*2);
box.size.height = (float)(rp[3]*2);
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);
}
if( box.angle < -180 )
    box.angle += 360;
if( box.angle > 360 )
    box.angle -= 360;

return box;

If box.size.width <= box.size.height the angle of rotated rect would be indefinite. Please correct me, if I am wrong.