OpenCV 4.13.0
开源计算机视觉库 (Open Source Computer Vision)
正在加载...
正在搜索...
未找到匹配项
cv::Rect_< _Tp > 类模板参考

2D矩形的模板类。更多...

#include <opencv2/core/types.hpp>

cv::Rect_< _Tp > 的协作图

公开类型

typedef _Tp value_type (值类型)
 

公开成员函数

 Rect_ ()
 默认构造函数
 
 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
 矩形的面积 (width*height)
 
Point_< _Tpbr () const
 右下角
 
template<typename _Tp2 >
bool contains (const Point_< _Tp2 > &pt) const
 检查矩形是否包含该点
 
bool empty () const
 如果为空则为 true
 
template<typename _Tp2 >
 operator Rect_< _Tp2 > () const
 转换为另一种数据类型
 
Rect_operator= (const Rect_ &r)=default
 
Rect_operator= (Rect_ &&r) CV_NOEXCEPT=default
 
Size_< _Tpsize () const
 矩形的尺寸 (宽, 高)
 
Point_< _Tptl () const
 左上角
 

公开属性

_Tp height
 矩形的高度
 
_Tp width
 矩形的宽度
 
_Tp x
 左上角x坐标
 
_Tp y
 左上角y坐标
 

详细说明

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

用于 2D 矩形的模板类。

由以下参数描述

  • 左上角的坐标。这是 OpenCV 中 Rect_::x 和 Rect_::y 的默认解释。尽管如此,在您的算法中,您可以从左下角计算 x 和 y。
  • 矩形的宽度和高度。

OpenCV 通常假设矩形的顶部和左边界是包含的,而右侧和底部边界则不包含。例如,contains 方法返回 true,如果

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

几乎 OpenCV 中每个遍历图像 ROI 的循环(ROI 由 Rect_<int> 指定)都实现为

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坐标
定义 types.hpp:487
_Tp y
左上角y坐标
定义 types.hpp:488

除了类成员之外,还实现了以下对矩形的操作

  • \(\texttt{rect} = \texttt{rect} \pm \texttt{point}\) (通过特定偏移量移动矩形)
  • \(\texttt{rect} = \texttt{rect} \pm \texttt{size}\) (通过特定量扩展或收缩矩形)
  • rect += point, rect -= point, rect += size, rect -= size (增强操作)
  • rect = rect1 & rect2 (矩形交集)
  • rect = rect1 | rect2 (包含 rect1 和 rect2 的最小面积矩形)
  • rect &= rect1, rect |= rect1 (以及相应的增强操作)
  • rect == rect1, rect != rect1 (矩形比较)

这是一个关于如何建立矩形的部分排序的例子 (rect1 \(\subseteq\) rect2)

template<typename _Tp> inline bool
operator <= (const Rect_<_Tp>& r1, const Rect_<_Tp>& r2)
{
return (r1 & r2) == r1;
}
用于 2D 矩形的模板类。
定义 types.hpp:444
cv::GMat operator<=(const cv::GMat &lhs, const cv::GMat &rhs)

为了方便您使用,还提供了 Rect_<> 别名:cv::Rect

示例
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.

成员类型定义说明

◆ value_type

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

构造函数与析构函数说明

◆ Rect_() [1/6]

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

默认构造函数

◆ 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 )

成员函数说明

◆ area()

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

矩形的面积 (width*height)

示例
samples/cpp/camshiftdemo.cpp.

◆ br()

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

右下角

示例
samples/cpp/peopledetect.cpp.

◆ contains()

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

检查矩形是否包含该点

警告
在 OpenCV 4.11.0 之后,当使用 cv::Point2f / cv::Point2d 点调用 Rect.contains() 时,点不应转换为/四舍五入为 int。
Rect_<int> r(0,0,500,500); Point_<float> pt(250.0f, 499.9f);
r.contains(pt) 返回 false。(OpenCV 4.10.0 或之前)
r.contains(pt) 返回 true。(OpenCV 4.11.0 或之后)
由其坐标 x 和 y 指定的 2D 点的模板类。
定义 types.hpp:163

◆ empty()

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

如果为空则为 true

◆ operator Rect_< _Tp2 >()

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

转换为另一种数据类型

◆ 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

矩形的尺寸 (宽, 高)

示例
samples/cpp/stitching_detailed.cpp.

◆ tl()

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

成员数据文档

◆ height

◆ width

◆ x

◆ y


该类的文档由以下文件生成: