OpenCV Rect操作

1,OpenCV Rect 常用操作符 

注意:坐标系是标准的笛卡尔坐标系,X方向向右为正,Y方向向上为正
操作例子
默认构造函数cv::Rect r
赋值构造函数cv::Rect r2(r1)
带参数构造函数cv::Rect(x,y,w,h)
原始点和Size构造函数cv::Rect(p,sz)
两个角点构造函数cv::Rect(p1,p2)
成员函数访问r.x,r.y,r.width,r.height
计算面积r.erea()
提取左上角点坐标r.tl()
提取右下角点坐标r.br()
判断点是否在矩阵内r.contains(p)
计算两个矩形的交集cv::Rect r3=r1&r2
计算最小面积矩阵包含r1和r2cv::Rect r3=r1|r2
平移矩形,变量为xcv::Rect r3=r+x
扩展矩形区域,Sizecv::Rect rs=r+s
比较两个矩形是否相同bool eq=(r1==r2)
比较两个矩形是否不相同bool ne=(r1==r2)
  

2,应用的例子

//包含OpenCV的头文件
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace  std;
//使用OpenCV的命名空间
using namespace cv;
//Rect 类型操作 类型
int main()
{
	//1,默认构造函数
	Rect r0;//数据为 0x0 from (0,0)
	cout << r0 << endl;

	//2,赋值构造函数
	Rect r1(0, 0, 1, 1);
	Rect r2(r1);//数据为 1x1 from(0,0)
	cout << r2 << endl;

	//3,带参数的构造函数
	Rect r3(0, 1, 2, 3);//数据为 2x3 from (0,1)
	cout << r3 << endl;

	//4,从原始点和Size 构造函数 
	Rect r4(Point2f(2, 2), Size(1, 1));
	cout << r4 << endl;//数据为1x1 from(2,2);

	//5,访问成员函数
	Rect r5(1, 2, 3, 4);
	cout << r5.x << '\t' << r5.y << '\t' << r5.width << '\t' << r5.height << endl;
	
	//6,提取左上角坐标
	cout << r5.tl() << endl;//左上角坐标为(1,2)
	
	//7,提取右上角坐标
	cout << r5.br() << endl;//右下角坐标为(4,6)

	//8,判断一个点是否在矩形区域内
	bool bValue = r5.contains(Point2f(3, 3));
	cout << bValue << endl;//(3,3)是在矩形区域内

	//9,计算两个矩形区域的交集
	Rect r00(0, 0, 2, 2);
	Rect r01(1, 1, 2, 2);
	Rect rResult = r00&r01;
	cout << rResult << endl;//结果为1*1 from(1,1);

	//10.计算两个矩形区域的并集
	rResult = r00 | r01;
	cout << rResult << endl;//结果为 3*3 from(0,0)

	//11
	rResult = r00 + Size(2,1);//宽度+2 ,高度+1
	cout << rResult << endl;//结果为 4x3 from(0,0)

	//12
	rResult = r00 + Point2i(1,2);
	cout << rResult << endl;//结果为2*2  from (1,2) 

	
	return 0;
}

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在OpenCV中,rect(矩形)是一个常用的数据结构,用于表示一个矩形区域。在C语言中,可以使用cvRectangle函数来绘制矩形,其用法为:void cvRectangle(CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int line_type=8, int shift=0)。其中,img表示要绘制矩形的图像,pt1和pt2分别表示矩形的左上角和右下角的坐标,color表示矩形的颜色,thickness表示矩形的线条粗细,line_type表示线条的类型,shift表示坐标的小数位数。在C++中,可以使用rectangle函数来绘制矩形,其用法为:void rectangle(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=8, int shift=0)。其中,img表示要绘制矩形的图像,pt1和pt2分别表示矩形的左上角和右下角的坐标,color表示矩形的颜色,thickness表示矩形的线条粗细,lineType表示线条的类型,shift表示坐标的小数位数。此外,还可以使用Rect结构来表示矩形区域,其用法为:void rectangle(Mat& img, Rect rec, const Scalar& color, int thickness=1, int lineType=8, int shift=0)。其中,img表示要绘制矩形的图像,rec表示矩形的区域,color表示矩形的颜色,thickness表示矩形的线条粗细,lineType表示线条的类型,shift表示坐标的小数位数。\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [OpenCVRect()函数Rectangle()函数、matchTemplate()参数详解](https://blog.csdn.net/sinat_37281674/article/details/119478646)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [opencv-cpp-Rect()](https://blog.csdn.net/weixin_39875161/article/details/101112254)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值