了解opencv里面的函数,第一步必须是看官网上给出的文档。下面给出Rect类的c++使用。
class Rect_
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34template<typename _Tp> class CV_EXPORTS Rect_ { public: typedef _Tp value_type; //! various constructors Rect_(); Rect_(_Tp _x, _Tp _y, _Tp _width, _Tp _height); Rect_(const Rect_& r); Rect_(const CvRect& r); Rect_(const Point_<_Tp>& org, const Size_<_Tp>& sz); Rect_(const Point_<_Tp>& pt1, const Point_<_Tp>& pt2); Rect_& operator = ( const Rect_& r ); //! the top-left corner Point_<_Tp> tl() const; //! the bottom-right corner Point_<_Tp> br() const; //! size (width, height) of the rectangle Size_<_Tp> size() const; //! area (width*height) of the rectangle _Tp area() const; //! conversion to another data type template<typename _Tp2> operator Rect_<_Tp2>() const; //! conversion to the old-style CvRect operator CvRect() const; //! checks whether the rectangle contains the point bool contains(const Point_<_Tp>& pt) const; _Tp x, y, width, height; //< the top-left corner, as well as width and height of the rectangle };
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
Virtually every loop over an image ROI in OpenCV (where ROI is specified by Rect_<int> ) is implemented as:
1
2
3
4
5for(int y = roi.y; y < roi.y + rect.height; y++) for(int x = roi.x; x < roi.x + rect.width; x++) { // ... }
In addition to the class members, the following operations on rectangles are implemented:
(shifting a rectangle by a certain offset)
(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 rect2 and rect3 )
- 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 rect2):
1
2
3
4
5template<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:
最后
以上就是自由招牌最近收集整理的关于Rect函数的全部内容,更多相关Rect函数内容请搜索靠谱客的其他文章。
发表评论 取消回复