Bootstrap

opencv中rect的用法

转载:
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);
}
;