当前位置: 首页 > article >正文

[具身智能-236]:OpenCV ROI:Region of Interest(感兴趣区域)

在 OpenCV 中ROI是Region of Interest感兴趣区域的缩写。简单来说ROI 就是从图像中切出来的“一块”。在处理图像时我们往往不需要处理整张图片比如处理人脸时不需要管背景里的树通过提取 ROI我们可以只关注重点区域从而大幅提升处理速度和算法精度。结合最新的 OpenCV 开发实践我为你整理了 ROI 的核心操作指南 基础操作矩形 ROI这是最常用、最高效的方式。在 Python 中OpenCV 图像本质上是 NumPy 数组因此我们直接使用数组切片来提取 ROI。关键口诀先行后列即[y, x]或[高, 宽]。pythonimport cv2 # 1. 读取图像 img cv2.imread(example.jpg) # 2. 提取 ROI # 语法img[y1:y2, x1:x2] # 含义从第 y1 行到 y2 行从第 x1 列到 x2 列 roi img[100:300, 200:400] # 提取坐标 (200,100) 到 (400,300) 的矩形区域 # 3. 显示 ROI cv2.imshow(ROI, roi) cv2.waitKey(0)常见应用场景复制粘贴将 ROI 复制到图像的其他位置如img[500:700, 200:400] roi。局部处理只对 ROI 进行模糊、边缘检测等操作节省计算资源。 进阶操作不规则 ROI (圆形、多边形)如果你想提取圆形、椭圆或任意多边形区域简单的切片就不够用了。这时需要用到 Mask掩膜 技术。核心逻辑创建一个与原图同尺寸的“黑白图”Mask白色代表保留黑色代表舍弃然后通过按位与运算提取。pythonimport cv2 import numpy as np img cv2.imread(example.jpg) h, w img.shape[:2] # --- 场景 A圆形 ROI --- # 1. 创建全黑 Mask mask np.zeros((h, w), dtypenp.uint8) # 2. 在 Mask 上画一个白色的圆 cv2.circle(mask, (w//2, h//2), 100, (255), -1) # 圆心在中间半径100 # 3. 提取 ROI circular_roi cv2.bitwise_and(img, img, maskmask) # --- 场景 B多边形 ROI (任意形状) --- # 1. 创建全黑 Mask mask_poly np.zeros((h, w), dtypenp.uint8) # 2. 定义多边形顶点 pts np.array([[100,100], [200,100], [200,200], [100,250]], np.int32) pts pts.reshape((-1, 1, 2)) # 3. 填充白色多边形 cv2.fillPoly(mask_poly, [pts], (255)) # 4. 提取 ROI poly_roi cv2.bitwise_and(img, img, maskmask_poly) cv2.imshow(Circular ROI, circular_roi) cv2.imshow(Polygon ROI, poly_roi) cv2.waitKey(0)️ 交互式选择 ROI如果你在写调试工具不想每次都手动去量坐标可以使用 OpenCV 自带的交互函数。cv2.selectROI弹出一个窗口让你用鼠标框选区域返回(x, y, w, h)。pythonimg cv2.imread(example.jpg) # 按下空格键确认选择按 ESC 取消 x, y, w, h cv2.selectROI(Select ROI, img, False) # 根据返回值裁剪 roi img[y:yh, x:xw] cv2.imshow(Selected ROI, roi) cv2.waitKey(0)⚡ 为什么要用 ROI性能对比使用 ROI不仅仅是为了裁剪图片更是为了性能优化。在视频处理或高分辨率图像分析中差异巨大。假设我们要对一张 1920×1080 的图片做高斯模糊表格处理方式处理区域大小耗时 (估算)说明全图处理1920 × 1080~450ms计算量大浪费资源处理背景ROI 处理200 × 200~30ms速度提升 90% 以上只算核心区域 避坑指南坐标顺序再次强调NumPy 切片是img[y:yh, x:xw]也就是img[行范围, 列范围]。很多初学者写成img[x, y]会导致报错或截取到错误的长条区域。越界问题切片的坐标不能超出图像的实际宽高否则会报错IndexError。引用与拷贝roi img[0:100, 0:100]得到的是视图引用修改roi会直接改变原图img。如果你希望修改 ROI 而不影响原图必须使用.copy()例如roi img[0:100, 0:100].copy()。掌握 ROI 是 OpenCV 入门的第一步也是从“处理整图”进阶到“精准视觉分析”的关键。

相关文章:

[具身智能-236]:OpenCV ROI:Region of Interest(感兴趣区域)

在 OpenCV 中,ROI 是 Region of Interest(感兴趣区域)的缩写。简单来说,ROI 就是从图像中切出来的“一块”。在处理图像时,我们往往不需要处理整张图片(比如处理人脸时不需要管背景里的树)&…...

突破鸣潮帧率限制:WaveTools工具箱全攻略与优化指南

突破鸣潮帧率限制:WaveTools工具箱全攻略与优化指南 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 在《鸣潮》1.2版本更新后,许多玩家发现游戏帧率被锁定在60FPS,无法充…...

解决网易云音乐加密NCM文件播放限制的完整实践指南

解决网易云音乐加密NCM文件播放限制的完整实践指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经遇到过这样的情况:从网易云音乐下载的…...

seo关键词文章的结构应该怎么安排

SEO关键词文章的结构应该怎么安排 在当前竞争激烈的互联网环境中,SEO(搜索引擎优化)已经成为每个网站运营者必须掌握的技能之一。其中,关键词的选择和布局是SEO文章结构的核心部分。SEO关键词文章的结构应该怎么安排呢&#xff1…...

【投资小知识】金融投资领域常说的 Alpha(α)和 Beta(β)

Alpha(α) 和 Beta(β) 是金融投资领域的两个核心概念,用于拆解投资收益的来源和衡量风险。它们源于资本资产定价模型(CAPM),是量化投资和因子分析的基础。一、Beta(β&a…...

1949-2023年各地级市、县新注册农民专业合作社数量数据

数据介绍 农民专业合作社可以推动农业规模化与产业化经营资源整合,合作社通过集中土地、劳动力、资金等生产要素,实现规模化种植或养殖,降低单位生产成本。通过统一采购农资、技术培训、品牌销售,提升市场竞争力。 产业链延伸&a…...

[资源管理]:全链路智能化的Manifest协同方案

[资源管理]:全链路智能化的Manifest协同方案 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey 定位核心矛盾:资源管理的系统性困境 在数字内容分发领域,Manife…...

现代Qt开发——入门 · 环境搭建 · 00 · Qt6 安装踩坑指南

现代Qt开发——入门 环境搭建 00 Qt6 安装踩坑指南 相关仓库仍然已经开源,正在积极火热的建设之中,欢迎各位大佬提Issue和PR! 链接地址:https://github.com/Awesome-Embedded-Learning-Studio/Tutorial_AwesomeQt 1. 前言&…...

【MATLAB源码-第410期】基于matlab的图像去雾系统设计—采用暗通道先验、颜色衰减与导向滤波融合。

操作环境:MATLAB 2024a1、算法描述基于MATLAB的图像去雾系统设计与实现 摘要 雾霾天气会显著削弱成像系统获取场景信息的能力,使图像出现对比度下降、颜色失真、边缘模糊及远景细节衰减等问题,从而影响目标检测、场景理解、智能监控与辅助驾驶…...

基于 MATLAB 的交叉偏导数(CPD)约束盲图像去模糊系统实现与分析——输出去模糊前后对比图像及模糊核分布。

操作环境:MATLAB 2024a1、算法描述基于MATLAB的交叉偏导数(CPD)盲图像去模糊系统,是一种结合图像特征分析、频域滤波以及正则化思想的综合性图像复原方案。整个系统的设计核心在于通过交叉偏导数特征提取模糊方向信息,…...

STM32 智能垃圾桶项目笔记(二):基于TIM4与中断回调的超声波测距逻辑优化与实战

1. TIM4定时器在超声波测距中的关键作用 在智能垃圾桶项目中,超声波测距的准确性直接决定了自动开盖功能的可靠性。原始方案使用TIM3实现1μs延时已经解决了触发信号的问题,但Echo信号的高电平时间测量需要更高精度的方案。这就是TIM4定时器大显身手的地…...

用Python从零解析ARS548 4D毫米波雷达数据:一个完整的数据处理与可视化实战教程

用Python从零解析ARS548 4D毫米波雷达数据:一个完整的数据处理与可视化实战教程 在自动驾驶和智能交通领域,4D毫米波雷达正成为感知系统的核心传感器之一。相比传统毫米波雷达,ARS548等新一代4D雷达不仅能提供目标的距离、速度和方位角信息&a…...

【JEECG Boot】JEECG Boot 系统性知识体系全方位结构化总结

文章目录JEECG Boot一、平台基础定位与核心理念1. 核心定义与定位2. 核心设计理念二、整体技术架构体系1. 分层架构总览2. 核心技术栈明细3. 核心架构特性三、核心能力体系1. 低代码核心能力:代码生成器2. 零代码核心能力:Online在线开发3. AI原生赋能能…...

ESP32实战:5分钟搞定CAN通信,从硬件连接到数据收发(附代码)

ESP32实战:5分钟搞定CAN通信,从硬件连接到数据收发(附代码) 当你第一次拿到ESP32开发板时,可能已经尝试过Wi-Fi或蓝牙通信,但你是否知道这颗小小的芯片还能轻松实现工业级的CAN总线通信?CAN总线…...

【Swagger】Swagger系统性知识体系全方位结构化总结

文章目录 Swagger一、基础认知与发展历程1.1 核心定义与本质区分1.2 核心发展历程 二、核心基石:OpenAPI 规范(OAS)2.1 主流版本核心差异2.2 OAS 3.x 核心文档结构2.3 核心语法能力 三、Swagger 官方核心工具生态四、主流开发模式与全链路落地…...

保姆级教程:用Vivado MIG IP核搞定DDR3读写仿真(附AXI4波形分析)

从零掌握Vivado MIG IP核:DDR3读写仿真与AXI4协议深度解析 刚接触Xilinx FPGA的工程师第一次打开MIG IP核配置界面时,往往会被密密麻麻的参数选项吓到——时钟设置、AXI接口、地址映射、时序约束,每个环节都可能成为项目推进的拦路虎。本文将…...

别再被rosdep卡住了!ALOHA机械臂部署中‘skip noetic’报错的保姆级解决方案

突破ALOHA机械臂部署瓶颈:ROS Noetic生命周期终止后的实战解决方案 当你在深夜的实验室里调试ALOHA机械臂,屏幕突然跳出"Skip end-of-life distro noetic"的红色警告,那种感觉就像在高速公路上突然遇到路障。这不是普通的报错&…...

EduCoder实训答案查询站是怎么建起来的?从签到、解锁到数据抓取的全流程复盘

从零构建EduCoder答案查询站的技术实践与思考 去年冬天,我发现身边不少同学在EduCoder平台上刷实训时常常卡壳,而平台自带的答案解锁机制又需要消耗大量金币。作为一名计算机专业的学生兼业余开发者,我萌生了一个想法:能否通过技术…...

安卓开发者必看:解决Google Play服务报错的5种实战方法(附工具推荐)

安卓开发者必看:解决Google Play服务报错的5种实战方法(附工具推荐) 在安卓应用开发过程中,Google Play服务(Google Play Services)的集成几乎是不可避免的——无论是地图服务、支付功能,还是推…...

Qt实战:用QCustomPlot打造高性能动态波形图(附GitHub源码)

Qt实战:用QCustomPlot打造高性能动态波形图(附GitHub源码) 在物联网设备监控、工业自动化测试或生物电信号分析场景中,开发者常面临每秒数千个数据点的实时可视化挑战。传统绘图库在渲染高频动态波形时容易出现卡顿、帧率骤降等问…...

[具身智能-237]:OpenCV - 图像的坐标轴

OpenCV 的图像坐标系与我们在数学课上学到的标准笛卡尔坐标系有显著不同,这是初学者最容易混淆的地方。简单来说,它的核心规则是:原点在左上角,X 轴向右,Y 轴向下。下面为你详细拆解这个坐标系的构成,以及在…...

[具身智能-234]:OpenCV - 图像通常是三维的(高 H × 宽 W × 通道 C,例如 RGB 三通道),而 Mask 通常是二维的(高 H × 宽 W,单通道黑白),为什么?

图像通常是三维的(高 H 宽 W 通道 C,例如 RGB 三通道),而 Mask 通常是二维的(高 H 宽 W,单通道黑白)。它们之间的“映射”并不是数学上的维度变换,而是一种基于广播机制的逻辑索引…...

别再傻傻分不清!一张图看懂PMOS、NMOS和CMOS在电路设计中的真实区别

从物理特性到电路设计:PMOS、NMOS与CMOS的实战解析 在电子工程领域,MOSFET晶体管就像乐高积木一样构成了现代集成电路的基础模块。但面对PMOS、NMOS这对"双胞胎"时,许多初学者常常陷入困惑——为什么数字电路总爱用CMOS结构&#x…...

Harness 中的事务边界定义:微事务与补偿

Harness 中的事务边界定义:微事务与补偿 引言 核心概念铺垫 在开始本文的核心内容——Harness 中的事务边界定义与微事务/补偿实践体系——之前,我们需要先锚定一组贯穿全文的、与 CI/CD 交付流水线强绑定的专属术语与业务通用术语的融合定义: 交付事务(Delivery Transac…...

VLAN配置避坑指南:为什么你的Trunk接口加了PVID还是不通?

VLAN配置避坑指南:为什么你的Trunk接口加了PVID还是不通? 刚接触企业网络的新手工程师们,是否经常遇到这样的困惑:明明按照文档配置了Trunk接口的PVID,设备间的VLAN通信却依然无法建立?这背后往往隐藏着对P…...

Kubernetes集群的监控告警最佳实践

Kubernetes集群的监控告警最佳实践 🔥 硬核开场 各位技术老铁,今天咱们聊聊Kubernetes集群的监控告警最佳实践。别跟我扯那些理论,直接上干货!在云原生时代,监控告警是系统可靠性的关键,它能帮助我们及时发…...

告别迷茫!S32K312 MCU的LIN通信实战:从EB Tresos配置到代码调试全流程避坑

S32K312 MCU的LIN通信实战:从配置到调试的完整避坑指南 第一次在S32K312上实现LIN通信时,我盯着EB Tresos里密密麻麻的MCAL配置选项发呆了半小时。作为从STM32转战NXP平台的工程师,本以为LIN这种低速总线会很简单,直到实际项目中遇…...

云原生环境中的配置中心实践

云原生环境中的配置中心实践 🔥 硬核开场 各位技术老铁,今天咱们聊聊云原生环境中的配置中心实践。别跟我扯那些理论,直接上干货!在云原生时代,配置管理是系统可靠性和可维护性的关键。不搞配置中心?那你…...

Kubernetes与多集群服务网格实践

Kubernetes与多集群服务网格实践 🔥 硬核开场 各位技术老铁,今天咱们聊聊Kubernetes与多集群服务网格实践。别跟我扯那些理论,直接上干货!在云原生时代,多集群部署已经成为常态,而服务网格是实现多集群服务…...

云原生应用的性能测试与优化

云原生应用的性能测试与优化 🔥 硬核开场 各位技术老铁,今天咱们聊聊云原生应用的性能测试与优化。别跟我扯那些理论,直接上干货!在云原生时代,性能是用户体验的关键,也是系统可靠性的保障。不搞性能测试与…...