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

相关文章

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

mysql中insert into的基本用法和一些示例

《mysql中insertinto的基本用法和一些示例》INSERTINTO用于向MySQL表插入新行,支持单行/多行及部分列插入,下面给大家介绍mysql中insertinto的基本用法和一些示例... 目录基本语法插入单行数据插入多行数据插入部分列的数据插入默认值注意事项在mysql中,INSERT I

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程