From a07724aea27a11bc88663c157869f08ee636c5a1 Mon Sep 17 00:00:00 2001 From: Alexander Shishkov Date: Fri, 27 Apr 2012 13:37:48 +0000 Subject: [PATCH] fixed #1841 --- modules/core/doc/basic_structures.rst | 43 +++++++++++++++++++++- modules/core/doc/old_basic_structures.rst | 23 ++++++++++++ modules/core/doc/pics/rotatedrect.png | Bin 0 -> 4590 bytes 3 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 modules/core/doc/pics/rotatedrect.png diff --git a/modules/core/doc/basic_structures.rst b/modules/core/doc/basic_structures.rst index 2d49f60543..05f15e755a 100644 --- a/modules/core/doc/basic_structures.rst +++ b/modules/core/doc/basic_structures.rst @@ -171,8 +171,49 @@ RotatedRect ----------- .. ocv:class:: RotatedRect -Template class for rotated rectangles specified by the center, size, and the rotation angle in degrees. +The class represents rotated (i.e. not up-right) rectangles on a plane. Each rectangle is specified by the center point (mass center), length of each side (represented by cv::Size2f structure) and the rotation angle in degrees. + .. ocv:function:: RotatedRect::RotatedRect() + .. ocv:function:: RotatedRect::RotatedRect(const Point2f& center, const Size2f& size, float angle) + .. ocv:function:: RotatedRect::RotatedRect(const CvBox2D& box) + + :param center: The rectangle mass center. + :param size: Width and height of the rectangle. + :param angle: The rotation angle in a clockwise direction. When the angle is 0, 90, 180, 270 etc., the rectangle becomes an up-right rectangle. + :param box: The rotated rectangle parameters as the obsolete CvBox2D structure. + + .. ocv:function:: void RotatedRect::points(Point2f* pts) const + .. ocv:function:: Rect RotatedRect::boundingRect() const + .. ocv:function:: RotatedRect::operator CvBox2D() const + + :param pts: The points array for storing rectangle vertices. + +The sample below demonstrates how to use RotatedRect: + +:: + + Mat image(200, 200, CV_8UC3, Scalar(0)); + RotatedRect rRect = RotatedRect(Point2f(100,100), Size2f(100,50), 30); + + Point2f vertices[4]; + rRect.points(vertices); + for (int i = 0; i < 4; i++) + line(image, vertices[i], vertices[(i+1)%4], Scalar(0,255,0)); + + Rect brect = rRect.boundingRect(); + rectangle(image, brect, Scalar(255,0,0)); + + imshow("rectangles", image); + waitKey(0); + +.. image:: pics/rotatedrect.png + +.. seealso:: + + :ocv:cfunc:`CamShift`, + :ocv:func:`fitEllipse`, + :ocv:func:`minAreaRect`, + :ocv:struct:`CvBox2D` TermCriteria ------------ diff --git a/modules/core/doc/old_basic_structures.rst b/modules/core/doc/old_basic_structures.rst index 748f3a0c18..5c5aec4ba5 100644 --- a/modules/core/doc/old_basic_structures.rst +++ b/modules/core/doc/old_basic_structures.rst @@ -195,6 +195,29 @@ Stores coordinates of a rectangle. .. seealso:: :ocv:class:`Rect\_` + +CvBox2D +------ + +.. ocv:struct:: CvBox2D + +Stores coordinates of a rotated rectangle. + + .. ocv:member:: CvPoint2D32f center + + Center of the box + + .. ocv:member:: CvSize2D32f size + + Box width and height + + .. ocv:member:: float angle + + Angle between the horizontal axis and the first side (i.e. length) in degrees + +.. seealso:: :ocv:class:`RotatedRect` + + CvScalar -------- diff --git a/modules/core/doc/pics/rotatedrect.png b/modules/core/doc/pics/rotatedrect.png new file mode 100644 index 0000000000000000000000000000000000000000..344bf49ad0dc0e0f694e85dc28be9b049ab25801 GIT binary patch literal 4590 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 literal 0 HcmV?d00001