转载:
https://blog.csdn.net/kh1445291129/article/details/51149849/
https://blog.csdn.net/m0_37592397/article/details/81319130
一、函数列表
Rect::Clone 该函数用来创建一个与当前矩形对象相同的矩形对象
Rect::contains(point&) 该函数用来决定该点是否在此矩形框内
Rect::contains(rect&) 该函数用来决定另一个矩形框是否在这个矩形框内
Rect::contains(INT,INT) 该函数用来决定点(x,y)是否在此矩形框内
Rect::equals 该函数用来判定量矩形对象是否相等
Rect::getbottom 该函数用来获取矩形框底部边缘的y值
Rect::getbounds 该函数用来为这个矩形框创建一个副本
Rect::getleft 该函数用来获取矩形框左边缘的x值
Rect::getlocation 该函数用来获取矩形框左上角的坐标
Rect::getright 该函数用来获取矩形框右边缘的x值
Rect::getsize 该函数用来获取矩形框的宽度和高度
Rect::gettop 该函数用来获取矩形框左边缘的y值
Rect::inflate(INT,INT) 该函数通过dx在左右边框上扩大该矩形框,通过dy在上下边框上扩大该矩形框
Rect::inflate(point&) 该函数通过point.x的值在左右边框上来扩大该矩形框,通过point.y的值在上下边框上来扩大该矩形框
Rect::intsect(rects&;rects&;rects&) 该函数用来确定两个矩形框的交集,并将这一结果储存在一个rect对象中
Rect::intsect(rects&) 该函数用来将此矩形框与另一矩形框的交集来替换这一矩形框
Rect::intersectwith 该函数用来判断该矩形框是否与另一个矩形框相交
Rect::isemptyarea 该函数用来该矩形框是否为空
Rect::offset(INT,INT) 该函数用来移动此矩形框,通过水平的移动dx距离,以及垂直移动dy距离
Rect::offset(point&) 该函数用来水平地移动该矩形框point.x距离,以及垂直地移动该矩形框point.y距离
Rect::union 该函数用来决定两个矩形的合并,并将结果保存在一个rect对象中
二、常见函数用法
//如果创建一个Rect对象rect(100, 50, 50, 100),那么rect会有以下几个功能:
rect.area(); //返回rect的面积 5000
rect.size(); //返回rect的尺寸 [50 × 100]
rect.tl(); //返回rect的左上顶点的坐标 [100, 50]
rect.br(); //返回rect的右下顶点的坐标 [150, 150]
rect.width(); //返回rect的宽度 50
rect.height(); //返回rect的高度 100
rect.contains(Point(x, y)); //返回布尔变量,判断rect是否包含Point(x, y)点
//还可以求两个矩形的交集和并集
rect = rect1 & rect2;
rect = rect1 | rect2;
//还可以对矩形进行平移和缩放
rect = rect + Point(-100, 100); //平移,也就是左上顶点的x坐标-100,y坐标+100
rect = rect + Size(-100, 100); //缩放,左上顶点不变,宽度-100,高度+100
//还可以对矩形进行对比,返回布尔变量
rect1 == rect2;
rect1 != rect2;
三、常用但没定义的函数
//OpenCV里貌似没有判断rect1是否在rect2里面的功能,所以自己写一个吧
bool isInside(Rect rect1, Rect rect2)
{
return (rect1 == (rect1&rect2));
}
//OpenCV貌似也没有获取矩形中心点的功能,还是自己写一个
Point getCenterPoint(Rect rect)
{
Point cpt;
cpt.x = rect.x + cvRound(rect.width/2.0);
cpt.y = rect.y + cvRound(rect.height/2.0);
return cpt;
}
//围绕矩形中心缩放
Rect rectCenterScale(Rect rect, Size size)
{
rect = rect + size;
Point pt;
pt.x = cvRound(size.width/2.0);
pt.y = cvRound(size.height/2.0);
return (rect-pt);
}