06篇--图片目标区域的 ROI切割

何为ROI?

ROI:Region of Interest,翻译过来就是感兴趣的区域。什么意思呢?

比如对于一个人的照片,假如我们要检测眼睛,因为眼睛肯定在脸上,所以我们感兴趣的只有脸这部分,其他都不care,所以可以单独把脸的部分截取出来,这样就可以大大节省计算量,提高运行速度。

我们在使用OpenCV进行读取图像时,图像数据会被存储为Numpy数组,ROI切割        原理也是基于Numpy数组的切片操作来完成的,因此在对应的组件中就需要填我们要切割的ROI区域的坐标来完成ROI切割操作。目前只能手动填写坐标,后续深度学习后有其他方法代替。

注意:在OpenCV中,坐标的x轴的正方向是水平向右,y轴的正方向是垂直向下,与数学上的二维坐标并不相同。

示例:

将下面假面骑士天道总司的面部截取出来

 代码演示

import cv2
import numpy as np

# 读取一张图片
img = cv2.imread("image/kabuto.jpg")

# 提取该图片的宽高
w, h = img.shape[1], img.shape[0]

#确定目标截取区域
x_min = 280
x_max = 430
y_min = 180
y_max = 390

if x_min<0 or x_max>w or y_min<0 or y_max>h:
    print("要切割的区域是不合适的")
else:
    # 给要切割的内容画个框
    cv2.rectangle(img, (x_min-2, y_min-2), (x_max+2, y_max+2), (0, 0, 255), 2)
    # 保存要切割的内容
    img_roi = img[y_min:y_max, x_min:x_max]

    cv2.imshow('image_rect', img)
    cv2.imshow('image_roi', img_roi)

cv2.waitKey(0)

### 如何在图像处理中实现ROI区域提取 在图像处理中,ROI(Region of Interest,感兴趣区域)的提取是一项基础而重要的技术。它允许用户专注于图像的一部分而不是整幅图像,从而提升处理效率并降低资源消耗。以下是关于如何利用不同工具和技术来实现ROI区域提取的具体方法。 #### 使用OpenCV进行ROI区域提取 OpenCV 是一种广泛使用的计算机视觉库,在其中可以通过多种方式定义和提取ROI区域。以下是一个简单的代码示例,展示了如何使用 OpenCV 来选择和提取 ROI: ```python import cv2 # 加载图像 image = cv2.imread('example.jpg') # 定义ROI的位置 (左上角坐标, 右下角坐标) x, y, w, h = 100, 100, 300, 200 # 示例参数 # 提取ROI roi = image[y:y+h, x:x+w] # 显示原图和ROI cv2.imshow('Original Image', image) cv2.imshow('ROI', roi) # 等待按键关闭窗口 cv2.waitKey(0) cv2.destroyAllWindows() ``` 上述代码片段通过指定矩形框的边界 `(x,y)` 和宽度高度 `(w,h)` 实现了简单有效的ROI提取[^4]。 #### 利用手动交互选取ROI 除了手动设置坐标范围外,还可以让用户通过鼠标点击的方式动态选定感兴趣的区域。下面是一段基于 `cv2.selectROI` 的例子: ```python import cv2 # 加载图片 img = cv2.imread('test_image.png') assert img is not None, "file could not be read" # 让用户选择一个矩形作为ROI rect = cv2.selectROI("Select the Area", img, fromCenter=False, showCrosshair=True) # 解析所选矩形的信息 (x, y, w, h) = rect if all([x, y, w, h]): cropped_img = img[y:y+h, x:x+w] # 展示裁切后的部分 cv2.imshow("Cropped Image", cropped_img) else: print("No valid region selected") cv2.waitKey(0) cv2.destroyAllWindows() ``` 这段程序会弹出一个窗口让使用者拖拽形成想要观察的小块,并自动完成切割过程。 #### 借助HALCON执行高级形态学操作与ROI获取 对于更复杂的场景需求来说,Halcon提供了丰富的功能支持包括但不限于形态学运算在内的各种预处理手段以及灵活多变的ROI管理机制。例如可以采用如下步骤来进行复杂形状下的目标检测及相应区域界定工作: 1. **形态学操作**: 对输入数据实施诸如腐蚀、膨胀之类的滤波器作用以改善质量或者突出某些特性; 2. **特征抽取**: 寻找满足条件的对象轮廓或者其他显著标志物位置信息; 3. **创建自定义掩码/模板**, 并将其应用于源素材之上得到最终限定版面效果; 具体流程可参见参考资料中的描述[^3]. --- ### 总结 无论是初学者还是专业人士都可以找到适合自己项目特点的方法论去实践有关于“兴趣区”的课题研究方向。从基本框架搭建到深入探索细节优化都有相应的解决方案可供参考学习。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值