昊虹AI笔记网

 找回密码
 立即注册
搜索
查看: 823|回复: 0
收起左侧

Python-OpenCV选择、提取感兴趣区域(ROI区域)

[复制链接]

236

主题

238

帖子

916

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
916
昊虹君 发表于 2022-11-12 11:02 | 显示全部楼层 |阅读模式
Python-OpenCV选择、提取感兴趣区域(ROI区域)

在图像处理中,我们常常要对某个区域进行选择、提取,然后对这个区域进行单独分析、处理、显示。
这样的区域我们称为叫ROI区域,英文全称为Region of interest,中文名为“感兴趣区域”。

在Python-OpenCV中,图像数据是存储于ndarray对象中的,通常使用ndarray对象的切片操作或索引操作实现选择、提取ROI区域。

关于ndarray对象的切片操作,可以参考我之前的博文 https://www.hhai.cc/thread-117-1-1.html

关于ndarray对象的索引操作,可以参考我的下面两篇博文
对Numpy库ndarray对象(矩阵)中数据元素的访问、选取操作示例
将ndarray对象的数据按索引矩阵进行选取的几种方法

接下来,用几个示例,抛砖引用地讲述“Python-OpenCV选择、提取感兴趣区域(ROI区域)”的问题。

目录
  • 示例一:通过“=”和索引实现ROI区域的浅拷贝
  • 示例二:通过成员函数copy()实现ROI区域的深拷贝
  • 示例三:通过切片操作将矩阵的ROI区域替换为另一矩阵的值(深拷贝)

示例一:通过“=”和索引实现ROI区域的浅拷贝
现有矩阵A1,大小为7×7,我要选取其0到3行,0到2列的ROI区域,可以用“=”和索引实现ROI区域的浅拷贝。
示例代码如下:
  1. import numpy as np

  2. A1 = np.zeros((7, 7), dtype='uint8')
  3. # 通过“=”和索引实现ROI区域的浅拷贝
  4. B2 = A1[0:4, 0:3]
  5. B2[1, 1] = 1
复制代码

运行结果如下:

                                          


示例二:通过成员函数copy()实现ROI区域的深拷贝
现有矩阵A1,大小为7×7,我要选取其0到3行,0到2列的ROI区域,可以用成员函数copy()实现ROI区域的浅拷贝。
示例代码如下:
  1. import numpy as np

  2. A1 = np.zeros((7, 7), dtype='uint8')

  3. # 通过“=”和索引实现ROI区域的浅拷贝
  4. B1 = A1[0:4, 0:3]

  5. # 通过函数copy()实现ROI区域的深拷贝
  6. C1 = B1.copy()

  7. C1[1, 1] = 1
复制代码

运行结果如下图所示:



                                          

说明:因为是深拷贝,C1并不与A1和B1共用存储区,所以C1值的改变并不会影响A1和B1。

示例三:通过切片操作将矩阵的ROI区域替换为另一矩阵的值(深拷贝)
代码如下:
  1. import numpy as np
  2. A1 = np.zeros((7, 7), dtype='uint8')
  3. B1 = np.ones((3, 3), dtype='uint8')
  4. A1[1:4, 1:4] = B1
复制代码

运行结果如下:

上面的结果看不出是深拷贝还是浅拷贝,我们加一条语句就知道了:
  1. import numpy as np
  2. A1 = np.zeros((7, 7), dtype='uint8')
  3. B1 = np.ones((3, 3), dtype='uint8')
  4. A1[1:4, 1:4] = B1

  5. B1[1, 1] = 0
复制代码

运行结果如下:

                                          


从上面的运行结果可知,语句:
  1. A1[1:4, 1:4] = B1
复制代码

可见实现的是把A1中的子区域的值替换为矩阵B1中的值,而并不是把A1中的子区域的存储空间和B1共享。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|昊虹AI笔记网 ( 蜀ICP备2022024117号-1 )

GMT+8, 2024-4-24 22:18 , Processed in 0.024502 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表