目录

什么是ROI

提取ROI区域

方法一:

方法二:

实际应用演示


原文出处:

https://mp.weixin.qq.com/s/MiHz2zLBif_s1lksQXLBbw

微信公众号:OpenCV学堂
关注获取更多计算机视觉与深度学习知识

什么是ROI

ROI是英文Region Of Interest的三个首字母缩写,很多时候我们对图像的分析就是对图像特定ROI的分析与理解,对细胞与医疗图像来说,ROI提取正确才可以进行后续的分析、测量、计算密度等,而且这些ROI区域往往不是矩形区域,一般都是不规则的多边形区域,很多OpenCV初学者都不知道如何提取这些不规则的ROI区域。其实OpenCV中有个非常方便的API函数可以快速提取各种非正常的ROI区域。

提取ROI区域

在做这个之前,首先来了解一下什么图像处理中的mask(遮罩),OpenCV中是如此定义Mask的:八位单通道的Mat对象,每个像素点值为零或者非零区域。当Mask对象添加到图像区上时,只有非零的区域是可见,Mask中所有像素值为零与图像重叠的区域就会不可见,也就是说Mask区域的形状与大小直接决定了你看到最终图像的大小与形状。一个具体的示例如下:

可以看出,mask的作用是可以 帮助我们提取各种不规则的区域。OpenCV中完成上述步骤操作只需要简单调用API函数 bitwise_and 即可。

于是另外一个问题也随之而来,我们怎么生成这样mask区域,答案是在OpenCV中有两种方法搞定Mask区域生成。

方法一:

通过手动选择,然后通过多边形填充即可做到,代码实现如下:

import cv2 as cv
import numpy as npsrc = cv.imread("D:/images/gc_test.png")
cv.imshow("input", src)
h, w, c = src.shape# 手工绘制ROI区域
mask = np.zeros((h, w), dtype=np.uint8)
x_data = np.array([124, 169, 208, 285, 307, 260, 175])
y_data = np.array([205, 124, 135, 173, 216, 311, 309])
pts = np.vstack((x_data, y_data)).astype(np.int32).T
cv.fillPoly(mask, [pts], (255), 8, 0)
cv.imshow("mask", mask)# 根据mask,提取ROI区域
result = cv.bitwise_and(src, src, mask=mask)
cv.imshow("result", result)
cv.waitKey(0)

运行效果如下:

方法二:

这个也是OpenCV新手最迷茫的地方,如何通过程序生成mask,其实真的很简单。看代码演示吧!

src = cv.imread("D:/images/gc_test.png")
cv.imshow("input", src)# 生成mask区域
hsv = cv.cvtColor(src, cv.COLOR_BGR2HSV)
mask = cv.inRange(hsv, (156, 43, 46), (180, 255, 255))
cv.imshow("mask", mask)# 提取ROI区域,根据mask
result = cv.bitwise_and(src, src, mask=mask)
cv.imshow("result", result)
cv.waitKey(0)

效果如下:

主要是分为三步

  1. 提取轮廓ROI

  2. 生成Mask区域

  3. 提取指定轮廓

特别需要注意的是->其中生成Mask可以根据轮廓、二值化连通组件分析、inRange等处理方法得到。这里基于inRange方式得到mask区域,然后提取。

实际应用演示

最后看两个在实际处理会用到mask实现ROI提取然后重新背景融合之后生成新图像效果:

推荐阅读

OpenCV 提取不规则ROI区域相关推荐

  1. mat opencv 修改roi_OpenCV中如何提取不规则ROI区域

    点击上方"计算机视觉life",选择"星标" 快速获得最新干货 什么是ROI ROI是英文Region Of Interest的三个首字母缩写,很多时候我们对图 ...

  2. 实战解惑 | OpenCV中如何提取不规则ROI区域

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 什么是ROI ROI是英文Region Of Interest的三 ...

  3. OpenCV中如何提取不规则ROI区域, 手眼标定hand_eye_calibration

    opencv提取ROI区域: 在做这个之前,首先来了解一下什么图像处理中的mask(遮罩),OpenCV中是如此定义Mask的:八位单通道的Mat对象,每个像素点值为零或者非零区域.当Mask对象添加 ...

  4. opencv 手选roi区域_【OpenCV】选择ROI区域

    问题描述:在测试目标跟踪算法时,需要选择不同区域作为目标,进行目标跟踪,测试目标跟踪的效果. 解决思路: 1.OpenCV中提供了鼠标交互控制,利用setMouseCallback()给固定的窗口设置 ...

  5. 【opencv学习】ROI区域和图像填充

    一:ROI ROI就是region of interest,感兴趣的区域,有时候需要去看看某个特定的区域 #!/usr/bin/python # -*- coding: <encoding na ...

  6. [Python从零到壹] 三十七.图像处理基础篇之图像融合处理和ROI区域绘制

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  7. opencv 感兴趣区域提取 (ROI)

    opencv 感兴趣区域提取 (ROI) 1)使用像素坐标来提取ROI,前提是知道感兴趣区域的具体坐标范围 def img_cut():os.chdir(input)img_row = 1for im ...

  8. OPENCV C++图像提取,图像处理,roi,阈值分割,连通区域筛选,边缘检测(以箱子边缘框选为例)

    本周有机会接触了一点opnev, 在此做一下记录, 最终以框选出下图箱子为目的(图片箱子为相机实拍结果,曝光有点低,会有亿点点暗 ), 本文会拆解步骤并附上图片, 完整的源码在最后.PS:本文参考了好 ...

  9. OpenCV不规则ROI提取

    提取不规则感兴趣区域 void anomalyRoi(Mat &src, Mat &dst) {Mat original = src.clone();//高斯滤波GaussianBlu ...

最新文章

  1. update 两个表关联_你真的了解全量表,增量表及拉链表吗?
  2. golang执行linux命令
  3. STL源码剖析---空间配置器
  4. leetcode 113. 路径总和 II(Path Sum II)
  5. 带参数标签的取值方法
  6. 18岁男子吸电子烟一年肺如70岁老人,怒诉电子烟公司
  7. 群晖 上传 源文件不存在_群晖NAS配多大容量硬盘合适?
  8. Dynamic Rankings(整体二分)
  9. UTM坐标和WGS84坐标(如何转换?)
  10. 这年代,你需要了解一下什么是聚合搜索(附站点推荐)
  11. 【智能优化算法】基于黑寡妇优化算法求解单目标优化问题含Matlab源码
  12. Chrome 去掉“该网站的安全证书不受信任!”的提示
  13. 如何做一名称职的CEO
  14. 境外服务器停机:原因、影响以及如何预防
  15. 2021年焊工(初级)模拟考试题及焊工(初级)模拟考试题库
  16. matlab生成特定矩阵
  17. MySQL数据库常见报错案例与错误代码说明
  18. 《Towards Generative Aspect-Based Sentiment Analysis》论文阅读
  19. 【IAP】新建虚拟产品、新建测试帐号、获取产品列表、向自己的服务器生成订单、发送购买请求、服务端数据安全
  20. 伺服电机恒扭矩与恒功率输出

热门文章

  1. Glossary - 术语对照表 10
  2. 人生没有捷径,看完这个你就明白
  3. PS 文字有锯齿怎么办
  4. java四舍五入(保留两位小数)
  5. 51单片机开发:通过74HC595控制LED点阵
  6. 短视频获客系统哪家好
  7. Keil复制中文注释到记事本/word出现乱码
  8. 商城系统的可行性与需求
  9. 超300家生态伙伴参与文心千帆内测,百度智能云销售线索单月增长超4倍
  10. 【职场必备的8项竞争力】修炼七:演讲力——让演讲成为加分项