首页 > 其他分享 >判断检测框是否在感兴趣区域(ROI)内

判断检测框是否在感兴趣区域(ROI)内

时间:2024-10-27 19:16:53浏览次数:3  
标签:ROI 感兴趣 多边形 polygon 检测 height width 是否 矩形

判断检测框是否在感兴趣区域(ROI)内

在计算机视觉和图像处理中,我们经常需要确定一个矩形检测框是否位于一个特定的感兴趣区域(Region of Interest, ROI)内。这个ROI可以是一个多边形,而检测框则是一个矩形。本文将探讨如何判断一个矩形是否完全位于一个多边形内,并提供Python和C++的实现代码。

原理

要判断一个矩形是否在多边形内,我们可以采用以下步骤:

  1. 点在多边形内的判断:首先,我们需要一个算法来判断一个点是否在多边形内。这可以通过射线法(Ray Casting Algorithm)实现,即从该点向任意方向画一条射线,计算这条射线与多边形各边的交点数。如果交点数为奇数,则点在多边形内;如果为偶数,则点在多边形外。
  2. 矩形与多边形的碰撞检测:对于矩形,我们可以将其四个顶点分别作为点,使用上述算法判断这些点是否都在多边形内。如果所有顶点都在多边形内,则矩形完全在多边形内。

代码

导入需要的包

import matplotlib.path as mpath
import numpy as np
# 绘制矩形和多边形
import matplotlib.pyplot as plt

判断矩形是否在多边形内


def is_point_in_polygon(x, y, polygon):
    path = mpath.Path(polygon)
    return path.contains_point((x, y))

def is_rectangle_in_polygon(x, y, width, height, polygon):
    # 矩形的四个顶点
    vertices = [
        (x, y),
        (x + width, y),
        (x + width, y + height),
        (x, y + height)
    ]
    # 检查所有顶点是否都在多边形内

    return all([is_point_in_polygon(vertex[0], vertex[1], polygon) for vertex in vertices])

写一个例子测试

# 多边形顶点
polygon = np.array([[0, 0], [12, 0], [6, 10], [0, 10]])

# 矩形的位置和大小
x, y, width, height = -20, 6, 4, 4

# 判断矩形是否在多边形内
if is_rectangle_in_polygon(x, y, width, height, polygon):
    print("矩形在多边形内")
else:
    print("矩形不在多边形内")

绘制可视化图

# 绘制可视化图
fig, ax = plt.subplots()
ax.plot(polygon[:, 0], polygon[:, 1], 'b')
ax.add_patch(plt.Rectangle((x, y), width, height, edgecolor='r', facecolor='none'))
ax.axis('equal')
plt.show()

强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。国产化人工智能“产学 研用”一体化创新模式 在行业的建立,将大大提升当地政府人工智能形象。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。
项目基于springboot2.7.4+mybatisplus+vue2+mysql5.7开发,采用前后端分离的设计模式,提高系统的性能和可扩展性。同时,系统还采用了多种优化技术,如缓存、压缩等,以提高系统的响应速度和资源利用率。智能视觉平台和视频边缘盒子,用于设备不安全状态和人的不安全行为的监测和预警,降低安全风险,保障安全生产。
AI视频监控平台具有强大的功能和良好的可扩展性,轻松调用高精度、毫秒级识别的算法,并快速实现云边端多硬件部署上线适用于各种场景的视频监控和AI计算需求。如果您对该平台感兴趣或需要进一步了解相关信息,请随时联系我们。

标签:ROI,感兴趣,多边形,polygon,检测,height,width,是否,矩形
From: https://blog.csdn.net/tt120326/article/details/143268264

相关文章

  • 垃圾溢满堆放识别检测
    垃圾溢满堆放识别检测系统的核心技术是基于YOLO深度学习模型,垃圾溢满堆放识别检测系统能够在监控画面中快速识别出垃圾箱外部的垃圾堆放情况。系统经过大量的训练和优化,能够识别出各种垃圾的特征,并能够准确判断是否溢满堆放。垃圾溢满堆放识别检测系统一旦检测到垃圾箱外有垃圾堆......
  • 水面漂浮物生活垃圾识别检测系统
    水面漂浮物生活垃圾识别检测系统通过现场监控摄像机对河道湖面等水体进行实时监测,水面漂浮物生活垃圾识别检测系统借助智能视频分析技术和YOLO深度学习技术,系统能够自动识别和抓拍水面上的垃圾漂浮物。一旦系统检测到有垃圾漂浮在水面上,立即触发预警机制,并将现场抓拍的图片及时推......
  • P2251 质量检测
    题目大意给定长度为\(N\)的数组\(A\),定义数组\(Q\),\(Q_i=\min{\{A_1,A_2,\cdots,A_i\}}\)。对于每个\(i\left(1\lei\leN-M+1\right)\),输出\(Q_{i}\),\(M\)是给定的常数。样例输入104165695131420812输出5555588解决方法发现题目是要获取每......
  • 【Android Studio】通过编辑setting.gradle文件,添加阿里仓库
    本人对AndroidStudio的了解非常初级,这篇blog主要是自用备忘性质。因为众所周知的原因,国外仓库访问很不方便,影响项目构建。所以需要添加国内仓库,而阿里云仓库属于比较知名的。阿里云仓库服务自AndroidStudioBumblebee(2021.1.1)开始,仓库地址的存放位置,从项目级别的build.gradl......
  • OpenCV学堂 | YOLOv8实战 | 荧光显微镜细胞图像检测
    本文来源公众号“OpenCV学堂”,仅用于学术分享,侵权删,干货满满。原文链接:YOLOv8实战|荧光显微镜细胞图像检测数据集地址该图像数据集是U2OS细胞高通量化学筛选的一部分,其中包含200种生物活性化合物的示例。治疗效果最初是使用细胞绘画测定(荧光显微镜)成像的。该数据集仅......
  • uni-app 扫码插件推荐:基于支付宝 mPaaS 扫码组件开发,支持 Android 和 iOS
    一.前言之前说到,我的一个uni-app项目遭到用户吐槽:“你们这个App扫码的正确率太低了,尤其是安卓的设备。经常性的扫码扫不出来,就算是扫出来了,也是错误的结果!”面对以上这个问题,我在当时的项目是使用了一个基于安卓原生zxing扫码插件实现的,虽然扫码效率可观,但是它也有一......
  • 基于数字图像matlab-运动物体检测
                            目录一.课程设计任务二.课程设计原理及设计方案1三.课程设计的步骤和结果四.设计体会4五.参考文献5             一 课程设计任务    在视频监控领域,需要对监控画面进行存储。长时间......
  • AIDA64 Extreme(硬件检测工具)v7.40正式版
    全球No.1的硬件识别,诊断神器AIDA64v6.752022年夏季正式版发布.AIDA64中文版是一款硬件检测工具及基准测试软件(烤机软件),对硬件玩家来说,AIDA64电脑版是设备识别性能检测不二之选,权威性遥遥领先AIDA64官方版(原EVEREST)是一款综合性的系统硬件检测工具,号称最权威的......
  • supervision 检测和分割Utils Day(3)
    今天学习Detections和Segmentation底下的DoubleDetectionFilter和一些列方法工具Utils一、DoubleDetectionFilter(官方文档下归的类)OverlapFilter类介绍:OverlapFilter类是一个枚举类,枚举过滤重叠的策略,主要处理一些检测框或检测膜重叠的问题属性:NONE:不根据重叠......
  • Windows11 24H2系统跳过硬件检测安装
    1、下载Windows11系统镜像访问微软官网地址https://www.microsoft.com/zh-cn/software-download/windows11选择“Windows11(适用于x64设备的多版本ISO)”选项,然后点击下方的“立即下载”按钮,选择“简体中文”选项,然后点击确认会弹出验证创建下载,最后点击“64-bitDownload”按......