Search code examples
pythonopencvcontour

What is the output of minAreaRect(contours)


I have recently started working with openCV and and python. I have a project where I am finding contours using findContours. I get roughly around 6-8 contours on which I am looping to get the bounding box that fits the contour.

For that I have used minAreaRect(contours) which gives me rotated rectangle that should fit the contour. Now the output of this command is a list of tuples.

Each tuple looks like this ((81.0, 288.0), (22.0, 10.0), -0.0) I couldnt get any description on what each of that number mean?

I think it might be ((x-coordinate, y-coordinate),(width, height), rotation).


Solution

  • You are correct. Having a look at OpenCV's (C++) documentation on cv::minAreaRect, we see that a cv::RotatedRect is returned. The full construcor of cv::RotatedRect is:

    cv::RotatedRect::RotatedRect(const cv::Point2f& center, const cv::Size2f& size, float angle)    
    

    The description of the corresponding parameters is:

    center    The rectangle mass center.
    size      Width and height of the rectangle.
    angle     The rotation angle in a clockwise direction. When the angle is 0, 90, 180, 270 etc., the rectangle becomes an up-right rectangle.
    

    Obviously, center and size are treated as tuples in the Python API, and all three parameters are returned as a tuple also. So, all in all this fits quite well your assumption.

    Hope that helps!