OpenCV Rect_< _Tp > 模版类详解及其成员函数用法示例

2024-08-26 01:28

本文主要是介绍OpenCV Rect_< _Tp > 模版类详解及其成员函数用法示例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        OpenCV Rect_< _Tp > 模版类是一个2维矩形模板类,其英文全称为Rect_< _Tp > Class Template Reference,其公有成员函数有以下几个:

        其公有属性有:

        Rect_< _Tp > 模版类以左上角点tl,坐标_Tp x,Tp y及矩形宽度及矩形高度来描述一个矩形。有了矩形的基本属性,就可获得其他属性。如右下角点br(用两点构造一个矩形,默认这两个点是其对角点),矩形的size,矩形的面积等,也可判定一个点是否在矩形内。另外矩形还可以执行一下操作:

        rect = rect ± point;//将矩形移动一定的偏移量

        rect = rect ±s ize;//将矩形扩大或缩小一定量

        rect += point;

        rect -= point;

        rect += size;

        rect -= size ;

        rect = rect1 & rect2;//求矩形相交部分(即相互叠加部分)

        rect = rect1 | rect2;  //同时包含 rect1 和 rect2 的最小面积矩形

        rect &= rect1,;

        rect |= rect1;

        bool b1 = (rect1 == rect2); //比较判断

        bool b2 = (rect1 != rect2); //比较判断

        因C++的基本数据类型有:int,flot,double等,OpenCV中有定义相应的Rect,如下:

        typedef Rect_<int> cv::Rect2i

        typedef Rect2i ​​​​​​cv::Rect

        typedef Rect_<double> cv::Rect2d

        typedef Rect_<float> cv::Rect2f

        常用的Rect实际上是矩形模板类实例化int的类。

        示例程序

        下面新建一个控制台应用程序,来演示矩形创建及其他成员函数的用法。其代码如下:

#include <iostream>
#include <opencv2/opencv.hpp>using namespace cv;
using namespace std;int main()
{Rect rec[8];Point pts[3];pts[0].x = 30;pts[0].y = 30;pts[1].x = 230;pts[1].y = 130;pts[2].x = 80;pts[2].y = 80;rec[1] = Rect(pts[0], Size(150, 100));//test constructor and "= "operatrorrec[2] = Rect(80,80, 150,80);         //test constructor and" = "operatrorrec[3] = Rect(pts[2], pts[1]);        //ttest constructor and" = "operatrorcout << "rec[1] width = " << rec[1].width << endl;cout << "rec[1] height = " << rec[1].height << endl;cout << "rec[1] area = " << rec[1].area() << endl;cout << "rec[1] top left corner: " << rec[1].tl() << endl;cout << "rec[1] bottom left corner: " << rec[1].br() << endl;if (rec[1].contains(pts[2])) //test contiains functioncout << "rec[1] contins pts[2] " << endl;else{cout << "rec[1] does not contin pts[2] " << endl;}rec[4] = rec[1] & rec[2]; //test" &" operaterif (rec[4].empty())cout << " There is not intersection between rec[1] and rec[2]" << endl;else{cout << "rec[4] width = " << rec[4].width << endl;cout << "rec[4] height = " << rec[4].height << endl;cout << "rec[4] area = " << rec[4].area() << endl;cout << "rec[4] top left corner: " << rec[4].tl() << endl;cout << "rec[4] bottom left corner: " << rec[4].br() << endl;}rec[5] = rec[1] | rec[2]; // test "|" operaterif (rec[5].empty())cout << "rec[5] is empty" << endl;else{cout << "rec[5] width = " << rec[5].width << endl;cout << "rec[5] height = " << rec[5].height << endl;cout << "rec[5] area = " << rec[5].area() << endl;cout << "rec[5] top left corner: " << rec[5].tl() << endl;cout << "rec[5] bottom left corner: " << rec[5].br() << endl;}rec[6] = rec[1] + Size(100, 100);cout << "rec[6] width = " << rec[6].width << endl;cout << "rec[6] height = " << rec[6].height << endl;cout << "rec[6] area = " << rec[6].area() << endl;cout << "rec[6] top left corner: " << rec[6].tl() << endl;cout << "rec[6] bottom left corner: " << rec[6].br() << endl;rec[7] = rec[1] + Point(50,50);cout << "rec[7] width = " << rec[7].width << endl;cout << "rec[7] height = " << rec[7].height << endl;cout << "rec[7] area = " << rec[7].area() << endl;cout << "rec[7] top left corner: " << rec[7].tl() << endl;cout << "rec[7] bottom left corner: " << rec[7].br() << endl;waitKey(0);
}

本博文到此结束。

这篇关于OpenCV Rect_< _Tp > 模版类详解及其成员函数用法示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1107157

相关文章

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

Java访问修饰符public、private、protected及默认访问权限详解

《Java访问修饰符public、private、protected及默认访问权限详解》:本文主要介绍Java访问修饰符public、private、protected及默认访问权限的相关资料,每... 目录前言1. public 访问修饰符特点:示例:适用场景:2. private 访问修饰符特点:示例:

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

详解Java如何向http/https接口发出请求

《详解Java如何向http/https接口发出请求》这篇文章主要为大家详细介绍了Java如何实现向http/https接口发出请求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用Java发送web请求所用到的包都在java.net下,在具体使用时可以用如下代码,你可以把它封装成一

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

mac中资源库在哪? macOS资源库文件夹详解

《mac中资源库在哪?macOS资源库文件夹详解》经常使用Mac电脑的用户会发现,找不到Mac电脑的资源库,我们怎么打开资源库并使用呢?下面我们就来看看macOS资源库文件夹详解... 在 MACOS 系统中,「资源库」文件夹是用来存放操作系统和 App 设置的核心位置。虽然平时我们很少直接跟它打交道,但了

关于Maven中pom.xml文件配置详解

《关于Maven中pom.xml文件配置详解》pom.xml是Maven项目的核心配置文件,它描述了项目的结构、依赖关系、构建配置等信息,通过合理配置pom.xml,可以提高项目的可维护性和构建效率... 目录1. POM文件的基本结构1.1 项目基本信息2. 项目属性2.1 引用属性3. 项目依赖4. 构

Rust 数据类型详解

《Rust数据类型详解》本文介绍了Rust编程语言中的标量类型和复合类型,标量类型包括整数、浮点数、布尔和字符,而复合类型则包括元组和数组,标量类型用于表示单个值,具有不同的表示和范围,本文介绍的非... 目录一、标量类型(Scalar Types)1. 整数类型(Integer Types)1.1 整数字