OpenCV图像处理——矩形(Rect)类的常用操作

news/2024/7/21 7:33:21 标签: opencv, 图像处理, 人工智能, Rect, 矩形

Rect_0">1.Rect

创建类

Rect类成员变量x、y、width、height,分别为左上角点的坐标和矩形的宽和高。

创建一个Rect对象Rect,并在图像上画该矩形框。

	cv::Rect rect(100, 50, 500, 500);
	cv::Mat cv_src = cv::imread("11.JPG");
	cv::rectangle(cv_src, rect, cv::Scalar(255, 0, 0),4);
	cv::namedWindow("src", 0);
	cv::imshow("src", cv_src);

	cv::waitKey(0);

在这里插入图片描述

Rect_15">2. Rect常用参数

cv::Rect rect(100, 50, 500, 500);

rect.area();//面积
rect.size();//大小
rect.tl(); //左上角
rect.br(); //右下角
rect.size().width;//宽
rect.size().height; //高

std::cout << "rect area = " << rect.area() << ",rect size = " << rect.size()
		<< ",rect tl = " << rect.tl() << ",rect br = " << rect.br() << ", rect width = "
		<< rect.size().width << ",rect height = " << rect.size().height << std::endl;

输出

rect area = 250000,rect size = [500 x 500],rect tl = [100, 50],rect br = [600, 550], rect width = 500,rect height = 500

3. 常用判断

3.1 判断点是否在矩形内,就是矩形是否包含这个点
rect.contains(cv::Point(x, y)); 
3.2 判断对比两个矩形是否相等
rect1 == rect2;
rect1 != rect2;
3.3 判断矩形是否包含另一个矩形
bool isInside(cv::Rect& rect1, cv::Rect& rect2)
{
	if (rect1.area() > rect2.area())
	{
		return (rect1 == (rect1 & rect2));
	}
	else
	{
		return (rect2 == (rect2 & rect1));
	}
}

测试调用代码

	cv::Rect rect1(100, 50, 500, 500);

	cv::Rect rect2(150, 100, 300, 300);

	cv::Mat cv_src = cv::imread("11.JPG");
	cv::rectangle(cv_src, rect1, cv::Scalar(255, 0, 0),4);
	cv::rectangle(cv_src, rect2, cv::Scalar(255, 0, 255), 4);
	cv::namedWindow("src", 0);
	cv::imshow("src", cv_src);

	std::cout << isInside(rect1, rect2) << std::endl;

	cv::waitKey(0);

在这里插入图片描述

3.4 判断两个矩形是否相交

当要判断两具矩形是否相交,就要考虑到,两个矩形如果相交几种可能性。
在这里插入图片描述

bool computRectJoinUnion(cv::Rect& r1, cv::Rect& r2)
{
    if (r1.area() > r2.area())
    {
        if (r1.contains(r2.tl()) || r1.contains(r2.br()))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    else if (r1.area() < r2.area())
    {
        if (r2.contains(r1.tl()) || r2.contains(r1.br()))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    else
    {
        return false;
    }
}

4.矩形常用操作

4.1 获取矩形矩形中心
cv::Point getCenterPoint(cv::Rect& rect)
{
	cv::Point cpt;
	cpt.x = rect.x + cvRound(rect.width/2.0);
	cpt.y = rect.y + cvRound(rect.height/2.0);
	return cpt;
}
4.2 缩放矩形
//缩放矩形
cv::Rect rectScale(cv::Rect& rect, float x_scale, float y_scale)
{
	cv::Rect cv_rect;

	cv_rect.x = rect.x * x_scale;
	cv_rect.y = rect.y * y_scale;
	cv_rect.width = rect.width * x_scale;
	cv_rect.height = rect.height * y_scale;

	return cv_rect;
}

http://www.niftyadmin.cn/n/5006638.html

相关文章

获取街道、乡镇级的地图geoJson数据,使用echarts绘制地图

在此以泰州靖江市为例为例&#xff0c;记录一下实现过程 1、整体完成后实现的效果如下 2、获取数据 &#xff08;1&#xff09;DataV.GeoAtlas 第一个能想到的获取数据的网站就是它&#xff0c; 是阿里推出的一个用于获取全国、各省、各市以及个县级市详细地图信息的json文…

攻防世界-WEB-Web_php_include

打开靶机 通过代码审计可以知道&#xff0c;存在文件包含漏洞&#xff0c;并且对伪协议php://进行了过滤。 发现根目录下存在phpinfo 观察phpinfo发现如下&#xff1a; 这两个都为on 所以我们就可以使用data://伪协议 payload如下&#xff1a; - ?pagedata://text/plain,…

Windows下Git Bash的基本使用

创建版本库 git init 初始化完成后&#xff0c;会在目录下创建一个.git的隐藏目录&#xff0c;用来存放项目信息。 、 添加文件到版本库 在项目目录下新建文件readme.txt&#xff0c;内容为 Git is a version control system Git is a free software This is my first Try …

晶尔忠产业集团全面启动暨表彰大会

八月下旬&#xff0c;三伏已尽&#xff0c;初秋遂至。夏日的余热还没有完全散去&#xff0c;初秋的热浪随之席卷而来&#xff0c;大地依旧绿意盎然&#xff0c;万物正是生长最猛烈的时期&#xff0c;为秋天的收获做最后的冲刺&#xff0c;这是一个充满生机的时节&#xff0c;也…

极客时间:数据结构与算法之美【学习笔记+思考实践】

本篇是 《极客时间&#xff1a;数据结构与算法之美》课程的学习笔记和带有自己的一些思考实践。原文学习链接如下&#xff1a;https://time.geekbang.org/column/intro/100017301 开篇词 | 从今天起&#xff0c;跨过“数据结构与算法”这道坎01 | 为什么要学习数据结构和算法&a…

Apache Doris 2.0 如何实现导入性能提升 2-8 倍

数据导入吞吐是 OLAP 系统性能的重要衡量标准之一&#xff0c;高效的数据导入能力能够加速数据实时处理和分析的效率。随着 Apache Doris 用户规模的不断扩大&#xff0c; 越来越多用户对数据导入提出更高的要求&#xff0c;这也为 Apache Doris 的数据导入能力带来了更大的挑战…

leetcode分类刷题:栈(Stack)(一、字符串相邻元素删除类型)

1、在leetcode分类刷题&#xff1a;基于数组的双指针&#xff08;一、基于元素移除的O(1)类型&#xff09;题目中&#xff0c;采用双指针之快慢指针的算法来解决。 2、字符串相邻元素的删除问题&#xff0c;用栈来进行管理&#xff0c;会非常有效&#xff1b;这种题型排在后面的…

FlinkCDC 菜鸟教程-文章目录

系列文章目录 背景篇 环境篇 准备一台已经安装了 Docker 的 Linux 或者 MacOS 电脑。准备教程所需要的组件版本对应关系安装环境检查 工具篇 flinkkibana 概念篇 Docker 介 绍Docker Compose 介 绍Kibana介 绍 实践篇 演示: Mysql CDC 导入 Elasticsearch 启动服务准备…