OpenCV  4.10.0-dev
Open Source Computer Vision
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Public Attributes | List of all members
cv::Rect_< _Tp > Class Template Reference

Template class for 2D rectangles. More...

#include <opencv2/core/types.hpp>

Collaboration diagram for cv::Rect_< _Tp >:

Public Types

typedef _Tp value_type
 

Public Member Functions

 Rect_ ()
 default constructor
 
 Rect_ (_Tp _x, _Tp _y, _Tp _width, _Tp _height)
 
 Rect_ (const Point_< _Tp > &org, const Size_< _Tp > &sz)
 
 Rect_ (const Point_< _Tp > &pt1, const Point_< _Tp > &pt2)
 
 Rect_ (const Rect_ &r)=default
 
 Rect_ (Rect_ &&r) CV_NOEXCEPT=default
 
_Tp area () const
 area (width*height) of the rectangle
 
Point_< _Tpbr () const
 the bottom-right corner
 
template<typename _Tp2 >
bool contains (const Point_< _Tp2 > &pt) const
 checks whether the rectangle contains the point
 
bool empty () const
 true if empty
 
template<typename _Tp2 >
 operator Rect_< _Tp2 > () const
 conversion to another data type
 
Rect_operator= (const Rect_ &r)=default
 
Rect_operator= (Rect_ &&r) CV_NOEXCEPT=default
 
Size_< _Tpsize () const
 size (width, height) of the rectangle
 
Point_< _Tptl () const
 the top-left corner
 

Public Attributes

_Tp height
 height of the rectangle
 
_Tp width
 width of the rectangle
 
_Tp x
 x coordinate of the top-left corner
 
_Tp y
 y coordinate of the top-left corner
 

Detailed Description

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

Template class for 2D rectangles.

described by the following parameters:

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++)
{
// ...
}
_Tp x
x coordinate of the top-left corner
Definition types.hpp:487
_Tp y
y coordinate of the top-left corner
Definition types.hpp:488

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

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;
}
Template class for 2D rectangles.
Definition types.hpp:444
cv::GMat operator<=(const cv::GMat &lhs, const cv::GMat &rhs)

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

Examples
samples/cpp/camshiftdemo.cpp, samples/cpp/facedetect.cpp, samples/cpp/falsecolor.cpp, samples/cpp/ffilldemo.cpp, samples/cpp/grabcut.cpp, samples/cpp/peopledetect.cpp, samples/cpp/stitching.cpp, samples/cpp/stitching_detailed.cpp, samples/cpp/train_HOG.cpp, and samples/dnn/object_detection.cpp.

Member Typedef Documentation

◆ value_type

template<typename _Tp >
typedef _Tp cv::Rect_< _Tp >::value_type

Constructor & Destructor Documentation

◆ Rect_() [1/6]

template<typename _Tp >
cv::Rect_< _Tp >::Rect_ ( )

default constructor

◆ Rect_() [2/6]

template<typename _Tp >
cv::Rect_< _Tp >::Rect_ ( _Tp  _x,
_Tp  _y,
_Tp  _width,
_Tp  _height 
)

◆ Rect_() [3/6]

template<typename _Tp >
cv::Rect_< _Tp >::Rect_ ( const Rect_< _Tp > &  r)
default

◆ Rect_() [4/6]

template<typename _Tp >
cv::Rect_< _Tp >::Rect_ ( Rect_< _Tp > &&  r)
default

◆ Rect_() [5/6]

template<typename _Tp >
cv::Rect_< _Tp >::Rect_ ( const Point_< _Tp > &  org,
const Size_< _Tp > &  sz 
)

◆ Rect_() [6/6]

template<typename _Tp >
cv::Rect_< _Tp >::Rect_ ( const Point_< _Tp > &  pt1,
const Point_< _Tp > &  pt2 
)

Member Function Documentation

◆ area()

template<typename _Tp >
_Tp cv::Rect_< _Tp >::area ( ) const

area (width*height) of the rectangle

Examples
samples/cpp/camshiftdemo.cpp.

◆ br()

template<typename _Tp >
Point_< _Tp > cv::Rect_< _Tp >::br ( ) const

the bottom-right corner

Examples
samples/cpp/peopledetect.cpp.

◆ contains()

template<typename _Tp >
template<typename _Tp2 >
bool cv::Rect_< _Tp >::contains ( const Point_< _Tp2 > &  pt) const
inline

checks whether the rectangle contains the point

Warning
After OpenCV 4.11.0, when calling Rect.contains() with cv::Point2f / cv::Point2d point, point should not convert/round to int.
Rect_<int> r(0,0,500,500); Point_<float> pt(250.0f, 499.9f);
r.contains(pt) returns false.(OpenCV 4.10.0 or before)
r.contains(pt) returns true. (OpenCV 4.11.0 or later)
Template class for 2D points specified by its coordinates x and y.
Definition types.hpp:163

◆ empty()

template<typename _Tp >
bool cv::Rect_< _Tp >::empty ( ) const

true if empty

◆ operator Rect_< _Tp2 >()

template<typename _Tp >
template<typename _Tp2 >
cv::Rect_< _Tp >::operator Rect_< _Tp2 > ( ) const

conversion to another data type

◆ operator=() [1/2]

template<typename _Tp >
Rect_ & cv::Rect_< _Tp >::operator= ( const Rect_< _Tp > &  r)
default

◆ operator=() [2/2]

template<typename _Tp >
Rect_ & cv::Rect_< _Tp >::operator= ( Rect_< _Tp > &&  r)
default

◆ size()

template<typename _Tp >
Size_< _Tp > cv::Rect_< _Tp >::size ( ) const

size (width, height) of the rectangle

Examples
samples/cpp/stitching_detailed.cpp.

◆ tl()

template<typename _Tp >
Point_< _Tp > cv::Rect_< _Tp >::tl ( ) const

Member Data Documentation

◆ height

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

◆ width

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

◆ x

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

◆ y

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

The documentation for this class was generated from the following file: