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

相关文章

Python装饰器之类装饰器详解

《Python装饰器之类装饰器详解》本文将详细介绍Python中类装饰器的概念、使用方法以及应用场景,并通过一个综合详细的例子展示如何使用类装饰器,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. 引言2. 装饰器的基本概念2.1. 函数装饰器复习2.2 类装饰器的定义和使用3. 类装饰

SpringBoot UserAgentUtils获取用户浏览器的用法

《SpringBootUserAgentUtils获取用户浏览器的用法》UserAgentUtils是于处理用户代理(User-Agent)字符串的工具类,一般用于解析和处理浏览器、操作系统以及设备... 目录介绍效果图依赖封装客户端工具封装IP工具实体类获取设备信息入库介绍UserAgentUtils

MySQL 中的 JSON 查询案例详解

《MySQL中的JSON查询案例详解》:本文主要介绍MySQL的JSON查询的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 的 jsON 路径格式基本结构路径组件详解特殊语法元素实际示例简单路径复杂路径简写操作符注意MySQL 的 J

pandas中位数填充空值的实现示例

《pandas中位数填充空值的实现示例》中位数填充是一种简单而有效的方法,用于填充数据集中缺失的值,本文就来介绍一下pandas中位数填充空值的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是中位数填充?为什么选择中位数填充?示例数据结果分析完整代码总结在数据分析和机器学习过程中,处理缺失数

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Python ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-

Java中的@SneakyThrows注解用法详解

《Java中的@SneakyThrows注解用法详解》:本文主要介绍Java中的@SneakyThrows注解用法的相关资料,Lombok的@SneakyThrows注解简化了Java方法中的异常... 目录前言一、@SneakyThrows 简介1.1 什么是 Lombok?二、@SneakyThrows