opencv on mbed

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Rect_< _Tp > Class Template Reference

Rect_< _Tp > Class Template Reference
[Basic structures]

Template class for 2D rectangles. More...

#include <types.hpp>

Public Member Functions

 Rect_ ()
 various constructors
Point_< _Tp > tl () const
 the top-left corner
Point_< _Tp > br () const
 the bottom-right corner
Size_< _Tp > size () const
 size (width, height) of the rectangle
_Tp area () const
 area (width*height) of the rectangle
template<typename _Tp2 >
 operator Rect_< _Tp2 > () const
 conversion to another data type
bool contains (const Point_< _Tp > &pt) const
 checks whether the rectangle contains the point

Detailed Description

template<typename _Tp>
class cv::Rect_< _Tp >

Template class for 2D rectangles.

described by the following parameters:

  • Coordinates of the top-left corner. This is a default interpretation of Rect_::x and Rect_::y in OpenCV. Though, in your algorithms you may count x and y from the bottom-left corner.
  • Rectangle width and height.

OpenCV typically assumes that the top and left boundary of the rectangle are inclusive, while the right and bottom boundaries are not. For example, the method Rect_::contains returns true if

\[x \leq pt.x < x+width, y \leq pt.y < y+height\]

Virtually every loop over an image ROI in OpenCV (where ROI is specified by Rect_<int> ) is implemented as:

    for(int y = roi.y; y < roi.y + roi.height; y++)
        for(int x = roi.x; x < roi.x + roi.width; x++)
        {
            // ...
        }

In addition to the class members, the following operations on rectangles are implemented:

  • $\texttt{rect} = \texttt{rect} \pm \texttt{point}$ (shifting a rectangle by a certain offset)
  • $\texttt{rect} = \texttt{rect} \pm \texttt{size}$ (expanding or shrinking a rectangle by a certain amount)
  • rect += point, rect -= point, rect += size, rect -= size (augmenting operations)
  • rect = rect1 & rect2 (rectangle intersection)
  • rect = rect1 | rect2 (minimum area rectangle containing rect1 and rect2 )
  • rect &= rect1, rect |= rect1 (and the corresponding augmenting operations)
  • rect == rect1, rect != rect1 (rectangle comparison)

This is an example how the partial ordering on rectangles can be established (rect1 $\subseteq$ rect2):

    template<typename _Tp> inline bool
    operator <= (const Rect_<_Tp>& r1, const Rect_<_Tp>& r2)
    {
        return (r1 & r2) == r1;
    }

For your convenience, the Rect_<> alias is available: cv::Rect

Definition at line 374 of file types.hpp.


Constructor & Destructor Documentation

Rect_ (  )

various constructors


Member Function Documentation

_Tp area (  ) const

area (width*height) of the rectangle

Point_<_Tp> br (  ) const

the bottom-right corner

bool contains ( const Point_< _Tp > &  pt ) const

checks whether the rectangle contains the point

operator Rect_< _Tp2 > (  ) const

conversion to another data type

Size_<_Tp> size (  ) const

size (width, height) of the rectangle

Point_<_Tp> tl (  ) const

the top-left corner