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区域的浅拷贝。
示例代码如下:

import numpy as npA1 = np.zeros((7, 7), dtype='uint8')
# 通过“=”和索引实现ROI区域的浅拷贝
B2 = A1[0:4, 0:3]
B2[1, 1] = 1

运行结果如下:

示例二:通过成员函数copy()实现ROI区域的深拷贝

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

import numpy as npA1 = np.zeros((7, 7), dtype='uint8')# 通过“=”和索引实现ROI区域的浅拷贝
B1 = A1[0:4, 0:3]# 通过函数copy()实现ROI区域的深拷贝
C1 = B1.copy()C1[1, 1] = 1

运行结果如下图所示:



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

示例三:通过切片操作将矩阵的ROI区域替换为另一矩阵的值(深拷贝)

代码如下:

import numpy as np
A1 = np.zeros((7, 7), dtype='uint8')
B1 = np.ones((3, 3), dtype='uint8')
A1[1:4, 1:4] = B1

运行结果如下:

上面的结果看不出是深拷贝还是浅拷贝,我们加一条语句就知道了:

import numpy as np
A1 = np.zeros((7, 7), dtype='uint8')
B1 = np.ones((3, 3), dtype='uint8')
A1[1:4, 1:4] = B1B1[1, 1] = 0

运行结果如下:


从上面的运行结果可知,语句:

A1[1:4, 1:4] = B1

可见实现的是把A1中的子区域的值替换为矩阵B1中的值,而并不是把A1中的子区域的存储空间和B1共享。

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

  1. OpenCV python(二)图像预处理:改变图像大小 提取感兴趣区域

    OpenCV python(二)图像预处理:改变图像大小 && 提取感兴趣区域 一.改变图像大小 1.获取图像宽.高.通道数 2.resize函数 3.案例 二.ROI感兴趣区域 1. ...

  2. ITK:在一幅图像中提取感兴趣区域ROI

    ITK:在一幅图像中提取感兴趣区域ROI 内容提要 输出结果 C++实现代码 内容提要 在给定图像中提取给定的关注区域(ROI) 输出结果 C++实现代码 #include "itkImag ...

  3. 提取图像感兴趣区域_从图像中提取感兴趣区域

    提取图像感兴趣区域 Welcome to the second post in this series where we talk about extracting regions of intere ...

  4. python二值化 感兴趣区域_Python+OpenCV感兴趣区域ROI提取方法

    方法一:使用轮廓 步骤1 """src为原图""" ROI = np.zeros(src.shape, np.uint8) #感兴趣区域RO ...

  5. OpenCV-C++选择、提取感兴趣区域(ROI区域)【附用鼠标选取ROI区域的代码】

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

  6. python opencv轮廓提取_Python + Opencv2 实现轮廓提取,轮廓区域面积计算

    对图像处理时,会遇到这样一个场景:找到图像主体轮廓,这是其一,可能为了凸显轮廓,需要用指定的颜色进行标记:轮廓标记完可能任务还没有结束,还需对轮廓所勾勒的像素面积区域统计计算. 本篇文章的主要内容就是 ...

  7. MATLAB提取感兴趣ROI

    一 代码 Image0=imread('MER-500-7UM(RQ0002001015)_2017-11-14_10_09_59_790-99.bmp');%--感兴趣区域ROI c=[300,67 ...

  8. Python+Opencv寻找图像中最亮的区域

    目录 一.场景需求解读 二.算法原理简介 三.算法代码实现 四.代码运行步骤 五.算法效果展示和分析 六.思维扩展 参考资料 注意事项 一.场景需求解读   在有些现实场景中,我们需要去使用算法自动的 ...

  9. 【图像处理】——Python+opencv实现提取图像的几何特征(面积、周长、细长度、区间占空比、重心、不变矩等)

    转载请注明详细地址 本文简单介绍了图像常见几何特征的概念以及求解方法 本文介绍了Python和opencv求解几何特征的常用方法 目录 其他形状外接轮廓的方法可以参考:<OpenCV-Pytho ...

最新文章

  1. SpringCloud之Feign源码分析
  2. html文件最后一行文字,文本多行溢出显示...之最后一行不到行尾的解决
  3. android studio panic,Android Studio模拟器PANIC错误
  4. python反射详解
  5. HTTPs 相关的东西
  6. saltstack自动化运维系列②之saltstack的数据系统
  7. java 多态判断非空_Java 面试知识点解析基础知识
  8. 不知道哪个学校教务处管理系统的图
  9. VMware中linux硬盘空间不足的解决方法
  10. SQL Server 日志数据库清理办法
  11. 大整数相乘python fft_Python带你理解用于信号同步的CAZAC序列
  12. GNS 3路由器7200介绍
  13. 国土空间用途管制制度构建的思考
  14. 苹果电脑为什么要换 CPU:Intel 与 ARM 的战争
  15. 2017 我所分享的技术文章总结(下)
  16. Python模拟屏幕点击自动完成词达人任务(附源码)
  17. 使用gitbook记录笔记
  18. 集成电路设计学习笔记(二)基于IC617反相器设计之原理图绘制
  19. 【大数据开发】FlinkSQL实战
  20. python拨号_python实现电脑自动拨号换ip(pppoe)

热门文章

  1. ASN.1 -- 编码规则
  2. QT之connect的第五个参数(信号与槽的使用)(qt对象树)
  3. 编辑制作照片墙Posterino
  4. apache常见错误:VC运行库(找不到 VCRUNTIME140.dll)
  5. zigbee 源码 05火焰传感器
  6. sql查询两张表中不同的数据
  7. webpack打包发布(完结)
  8. python3+flask_sqlalchemy+pymysql+mysql实例
  9. jvm堆外内存排查详解
  10. XLSX工作表日期转文本变为数字问题解决