OpenCV绘图函数(3)判断点一条直线是否在一个矩形范围内的函数clipLine()的使用

news/2024/9/18 10:56:57/ 标签: opencv, 计算机视觉, 人工智能
  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

裁剪线段与图像矩形相交的部分。
cv::clipLine 函数计算出完全位于指定矩形内的线段部分。如果线段完全位于矩形之外,则返回 false。否则,返回 true。
如果线段的一部分或全部位于矩形内,则该函数会调整线段的端点坐标,使得调整后的线段完全位于矩形内。如果线段完全位于矩形之外,则函数返回 false 表示不需要裁剪。如果线段需要裁剪,则函数返回 true,并且会修改传入的线段端点坐标来反映裁剪后的结果

函数原型1

bool cv::clipLine
(Size 	imgSize,Point & 	pt1,Point & 	pt2 
)		

参数1

  • 参数imgSize 图像尺寸。图像矩形定义为 Rect(0, 0, imgSize.width, imgSize.height)。
  • 参数pt1 线段的第一个点。
  • 参数pt2 线段的第二个点。

函数原型2

这是重载的成员函数,为方便提供。它与上面的函数仅在所接受的参数方面有所不同。

bool cv::clipLine
(Size2l 	imgSize,Point2l & 	pt1,Point2l & 	pt2 
)		

参数2

  • 参数imgSize 图像尺寸。图像矩形定义为 Rect(0, 0, imgSize.width, imgSize.height)。
  • 参数pt1 线段的第一个点。
  • 参数pt2 线段的第二个点。

函数原型3

这是重载的成员函数,为方便提供。它与上面的函数仅在所接受的参数方面有所不同。

bool cv::clipLine	
(Rect 	imgRect,Point & 	pt1,Point & 	pt2 
)		

参数3

  • 参数imgRect 图像矩形.
  • 参数pt1 线段的第一个点。
  • 参数pt2 线段的第二个点。

代码示例


#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>int main( int argc, char** argv )
{// 创建一个空白的图像cv::Mat image = cv::Mat::zeros( 512, 512, CV_8UC3 );// 定义线段的起点和终点cv::Point pt1( 100, 100 );  // 起始点cv::Point pt2( 400, 400 );  // 结束点// 定义图像的尺寸cv::Size imgSize( image.cols, image.rows );  // 图像尺寸// 裁剪线段bool clipped = cv::clipLine( imgSize, pt1, pt2 );// 检查裁剪结果if ( clipped ){ std::cout << "线段完全位于图像之内。" << std::endl;  // 如果线段被裁剪,则绘制裁剪后的线段cv::line( image, pt1, pt2, cv::Scalar( 0, 255, 0 ), 2 );}else{// 如果线段完全位于矩形之外,则不绘制std::cout << "线段完全位于图像之外。" << std::endl;}// 显示图像cv::imshow( "Clip Line Example", image );cv::waitKey( 0 );return 0;
}

运行结果

在这里插入图片描述
命令行输出:
在这里插入图片描述


http://www.ppmy.cn/news/1516606.html

相关文章

HarmonyOS--认证服务-操作步骤

HarmonyOS–认证服务 文章目录 一、注册华为账号开通认证服务二、添加项目&#xff1a;*包名要与项目的包名保持一致三、获取需要的文件四、创建项目&#xff1a;*包名要与项目的包名保持一致五、添加json文件六、加入请求权限七、加入依赖八、修改构建配置文件&#xff1a;bui…

【C#】【EXCEL】Bumblebee/Classes/ExEnums.cs

文章目录 Bumblebee/Classes/ExEnums.csFlow diagramDescriptionCode Bumblebee/Classes/ExEnums.cs Flow diagram #mermaid-svg-FB98N7ZCCccQ4Z38 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-FB98N7ZCCccQ4Z38…

20.缓存的更新策略

定义 缓存中的旧数据与数据库不一致。 缓存更新策略的类型 1.内存淘汰&#xff0c;利用redis的内存淘汰机制&#xff0c;当内存不足时自动淘汰部分数据。下次查询时更新缓存。redis默认开启了此机制。这种保证数据的一致性差。 2.超时剔除&#xff0c;给缓存数据添加TTL时间…

一文搞清全钢防静电地板的生产过程

防静电地板是各类大小机房不可缺少的地面材料。其中全钢防静电地板应用较为广泛&#xff0c;全钢防静电地板为全钢结构特征&#xff0c;底边选用深级伸拉钢板&#xff0c;造成窝状结构特征&#xff0c;提升了全钢防静电地板的抗压强度&#xff0c;表层选用硬质SPCC钢板&#xf…

WPF书籍阅读不指南

<wpf编程宝典> 对于刚匆忙学完 c# 的我来说,非常费劲. 只能 依靠<WPF深入浅出>>来对照看. ...就算是两本书互相看,还是十分难受,非常不理解...... 古老丛书<<windows Presentation Foundation 编程指南>> 一本 非常非常厚 的书,看着也难受,案例非常…

c#透明悬浮球实现 从零开始用C#写一个桌面应用程序(三)

目标&#xff1a;透明悬浮球 记录日期&#xff1a;20240308 要求基础&#xff1a;C#语言基础部分事件与委托&#xff0c;c#桌面程序基础操作 注&#xff1a;可见前文 http://t.csdnimg.cn/9uWK8 今天开始做一个悬浮球软件。本以为最难的是让悬浮球的具体功能&#xff0c…

【Qt】常见控件 —— QPushButton | QRadioButton

文章目录 QPushButtonQPushButton 的基本功能介绍QPushButton 添加快捷键通过图片实现 上下左右实现方向键的槽函数设置快捷键连发功能 QRadioButtonQRadioButton 的基本功能介绍通过 QRadioButton 选择性别具有排他效果禁用 选项 槽函数的使用情况基于 QRadioButton 实现一个简…

爬虫使用代理IP:提升数据抓取效率的实践

爬虫使用代理IP的技巧和方法 在进行网络爬虫时&#xff0c;使用代理IP可以帮助你提高数据抓取效率和保护隐私。本文将介绍爬虫使用代理IP的技巧和方法&#xff0c;帮助你更好地进行数据抓取。 为什么爬虫需要使用代理IP 在进行大规模数据抓取时&#xff0c;目标网站可能会检…

数据仓库: 4- 数据质量管理 5- 元数据管理

目录 4- 数据质量管理4.1 数据清洗4.1.1 数据清洗的重要性4.1.2 数据清洗常见的问题4.1.3 数据清洗的步骤4.1.3.1 数据质量评估:4.1.3.2 制定清洗规则:4.1.3.3 执行清洗操作:4.1.3.4 验证清洗结果:4.1.3.5 迭代优化: 4.1.4 数据清洗的常用方法4.1.5 数据清洗的最佳实践4.1.6 总…

外贸管理系统采购销售报关计算机毕业设计VUE/PYTHON/MYSQL

开发一个基于Vue、Python和MySQL的外贸管理系统&#xff0c;用于处理采购、销售以及报关等业务流程。这样的系统通常涉及前端界面展示、后端逻辑处理以及数据库存储等多个部分。下面是一些关键组件的设计建议&#xff1a;1. 技术栈选择 前端: Vue.js 后端: Python (Flask/Djang…

大数据分析与挖掘技术实训室解决方案

一、大数据分析与挖掘技术概述 大数据分析与挖掘技术是指运用算法、工具和技术处理和分析大规模数据集的过程。这些数据集来源于多个渠道&#xff0c;例如传感器数据、社交媒体数据、网络日志和金融交易记录等。其目标是在这些海量数据中发现有价值的信息、模式和趋势&#xf…

【MySQL】黑悟空都掌握的技能,数据库隔离级别全攻略

前言 &#x1f34a;缘由 黑神话悟空玩家必备&#xff0c;数据库隔离级别完全解读 &#x1f423;闪亮主角 大家好&#xff0c;我是JavaDog程序狗 今天借着黑神话悟空的热度&#xff0c;跟大家分享一下数据库隔离级别&#xff0c;也是面试必备的八股文 &#x1f608;你想听的…

使用阿里的EasyExcel导入数据

工作遇到一种情况,在导入excel的时候数量过多,导致占用内存太大最终OOM.为了避免这样的情况再次出现,更换easyPoi为EasyExcel,它是一行一行读,非常节省内存且快速. 首先依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel-core<…

对想学习人工智能或者大模型技术从业者的建议

“ 技术的价值在于应用&#xff0c;理论与实践相结合才能事半功倍” 写这个关于AI技术的公众号也有差不多五个月的时间了&#xff0c;最近一段时间基本上都在保持日更状态&#xff0c;而且写的大部分都是关于大模型技术理论和技术方面的东西。‍‍‍‍‍‍‍‍‍ 然后最近一段…

Mozilla为本地音频到文本翻译开发Whisperfile引擎

Mozilla Ocho 小组正进行 Mozilla 的"创新和实验"。Llamafile 用于将大型语言模型以单个文件的形式发布&#xff0c;以便在不同的硬件/软件间轻松执行。Whisperfile 是一项将音频轻松转化为文本的新引擎。 正如其名称所暗示的&#xff0c;Whisperfile 是围绕 OpenAI…

RabbitMQ如果有100万消息堆积在MQ,如何解决(消息堆积如何解决)面试版

什么情况下产生消息堆积 消息堆积&#xff1a;当生产者发送消息的速度 超过了 消费者处理消息的速度&#xff0c;就会导致队列中的消息堆积。 消息堆积会产生的问题&#xff1a;直到队列存储的消息达到上限。之后发送的消息就会成为死信&#xff0c;可能会被丢弃。 解决消息…

数据库表的nb3和sql后缀的处理方式

后缀是sql的话就直接运行sql文件 就可以把数据库添加到本地了&#xff08;像这样&#xff09; 右键你选择存放的数据库 -- 运行sql文件 -- 选择后缀是sql的文件 如果同事给你了一个后缀是nb3的话 那么就需要你去还原了 你想把这个表加到哪个库下就选择 右键备份 -- 还原备份从…

数据库查询大量数据避免内存溢出的方法

原理就是分批查询。每次查询一定数量数据之后记录id&#xff0c;进行数据处理之后再继续查询继续处理&#xff0c; allFrameObject mapper.findAllFrameObjectByMaxId(minTime, beginRow, 1000); while (CollectionUtils.isNotEmpty(allFrameObject)) {beginRow allFrameObj…

如何构建小学至大学素质评价档案系统 —— php Vue 实践指南

&#x1f34a;作者&#xff1a;计算机毕设匠心工作室 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目…

GPIO(通用输入/输出)、中断(hal库)

目录 GPIO&#xff08;通用输入/输出)&#xff08;hal库&#xff09; GPIO工作模式 推挽输出&#xff08;Push-Pull Output&#xff09; 开漏输出&#xff08;Open-Drain Output&#xff09; 复用推挽输出&#xff08;Alternate Function Push-Pull Output&#xff09; 复…