【拜小白opencv】5-Rect类的相关操作简介

来源:互联网 发布:java福利院管理系统 编辑:程序博客网 时间:2024/06/05 17:01

博主力求用最简单的语言将此部分内容讲解清楚,但由于博主同样是刚刚接触OpenCV,或许表达上有些错误,还望读者能够指教探讨,大家共同进步。

博主机器配置为:VS2013+opencv2.4.13+Win-64bit。

 如果本人写的能给读者带来一点点的帮助,我就很开心了。


======================分割线===============


opencv里有个Rect类,可以在图像处理过程中经常使用,这里简单介绍它的几种使用方法。

以下列出Rect类中几个常用函数:

  1. size()函数返回矩形的尺寸大小。
  2. area()函数返回矩形的面积,也就是矩形包含的像素点个数。也就是矩形的(宽*高)的值。
  3. contains(Point)能检测点是否在矩形内。
  4. tl()返回矩形左上角的点坐标。即top-left。
  5. br()返回矩形右下角点坐标。即bottom-right。

======================分割线===============

Rect类对象的创建示例

Rect rect(40, 40, 60, 30);
  • 参数解释:
  • 参数1:创建矩形的最左角的 x-坐标 ;
  • 参数2:创建矩形的最左角的 y-坐标;
  • 参数3:创建矩形的宽;
  • 参数4:创建矩形的高;
======================分割线===============

代码演示

#include<iostream>#include<opencv2/opencv.hpp>using namespace std;using namespace cv;int main(){//【0】定义相关变量Rect rect(40, 40, 60, 30);Point point(10, 10);//定义坐标在(10,10)的点Point point2(70, 50);Rect rect1(20, 20, 30, 40);Rect rect2(90, 30, 20, 10);Size size(20, 20);//【1】Rect类的相关操作cout << "矩形rect左上角的横坐标:" << rect.x << endl;cout << "矩形rect左上角的纵坐标:" << rect.y << endl;cout << "矩形rect的宽度:" << rect.width << endl;cout << "矩形rect的高度:" << rect.height << endl;cout << "矩形rect的尺寸:" << rect.size() << endl;cout << "矩形rect的面积:" << rect.area() << endl;cout << "\n矩形rect左上角的点坐标:" << rect.tl() << endl;cout << "矩形rect右下角的点坐标:" << rect.br() << endl;//该点在里面则为1,否则为0cout << "\n判断(10, 10)这个点在不在矩形rect内:" << rect.contains(point) << endl;cout << "判断(70, 50)这个点在不在矩形rect内:" << rect.contains(point2) << endl;cout << "\n矩阵rect与矩阵rect1的交集:" << (rect1 & rect) << endl;cout << "矩阵rect与矩阵rect1的并集:" << (rect | rect2) << endl;cout << "\n矩阵rect2进行平移操作:" << (rect2 + point) << endl;cout << "矩阵rect2进行平移操作:" << (rect2 - point) << endl;cout << "矩阵rect2改变尺寸大小操作:" << (rect2 + size) << endl;system("pause");//作用:暂停黑窗口,否则窗口一闪而过,看不见信息return 0;}


显示结果



=====================分割线==================

程序说明





图像在电脑中是以左上角为原点;
第一张图:表示最开始各个矩形和p点的位置;
第二张图:紫色填充的矩形表示rect和rect1交集;
                        红色矩形框表示rect和rect2并集;
第三张图:用于解释下输出结果的意思。

P.S.画的不好,只是为了便于理解。不明白的请自己在纸上画画看看,就会明白每行代码的意思了。

=================END==============
原创粉丝点击