点击上方“计算机视觉life”,选择“星标”

快速获得最新干货

什么是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 cvimport numpy as np

src = 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).Tcv.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区域,根据maskresult = 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提取然后重新背景融合之后生成新图像效果:

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、检测分割识别、三维视觉、医学影像、GAN、自动驾驶、计算摄影、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

投稿、合作也欢迎联系:simiter@126.com

长按关注计算机视觉life

推荐阅读

实战 | 相机标定

实战 | 图像矫正技术

实战 | Unity下ARKit与OpenCV的结晶

实战 | 基于SegNet和U-Net的遥感图像语义分割

实战 | 文字定位与切割

实战 | 源码入门之Faster RCNN

实战 | 自己实现扫描全能王

实战 | 用OpenCV轻松生成微信国庆版头像

实战 | OpenCV 实现多张图像拼接

实战 | OpenCV相机标定与畸变校正

实战 | 教你自动查找拍糊的图

实战 | 用 Python 给照片换色

我用MATLAB撸了一个2D LiDAR SLAM

实战 | 哪个瞬间让你突然觉得CV技术真有用?

干货 | 史上最全 OpenCV 活体检测教程

解决方案 | 如何用普通手机准确测量物体体积?

Mask-RCNN模型的实现自定义对象(无人机)检测

scikit-image图像处理入门

还在用肉眼找不同吗?这个技术轻松搞定

OpenCV测量物体的尺寸技能 get~

超详讲解图像拼接/全景图原理和应用 | 附源码

如何在实际中计划和执行一个机器/深度学习项目

8个计算机视觉深度学习中常见的Bug

最新AI干货,我在看  

mat opencv 修改roi_OpenCV中如何提取不规则ROI区域相关推荐

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

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

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

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

  3. mat opencv 修改roi_OpenCV Android:在新Mat中定义并保存ROI(OpenCV Android: Define and save ROI in new Mat)...

    OpenCV Android:在新Mat中定义并保存ROI(OpenCV Android: Define and save ROI in new Mat) 我正在尝试将我的图像的一部分切割(裁剪)到另 ...

  4. OpenCV 提取不规则ROI区域

    目录 什么是ROI 提取ROI区域 方法一: 方法二: 实际应用演示 原文出处: https://mp.weixin.qq.com/s/MiHz2zLBif_s1lksQXLBbw 微信公众号:Ope ...

  5. mat opencv 修改roi_设置图片ROI(OpenCV学习笔记之二)

    ROI相关简介 ROI是什么 ROI是region of interest首字母的简写,翻译为感性趣的区域.其实在写本篇之前应该写一篇关于图片是什么的学习笔记,但又感觉里面没多少东西还不能承载一篇学习 ...

  6. opencv 手选roi区域_【opencv学习笔记六】图像的ROI区域选择与复制

    图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...

  7. 【OpenCV】复制、切割出图像ROI区域

    对图像设定ROI的函数是: cvSetImageROI(IplImage* src,CvRect rect); src 表示的是源图像, rect 指的是ROI区域. 如果要取消ROI区域,那么使用函 ...

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

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

  9. OpenCV-如何提取出图片ROI区域

    根据项目需要,提取视频中的ROI区域进行处理,对于无关区域可以屏蔽掉.主要原理是把原始帧中的ROI定位(如帧差法.背景减除法找出轮廓矩形)后复制到一个黑色背景中,再进行后续预处理. 这里只是以图片为例 ...

最新文章

  1. java判断request请求是手机还是pc终端
  2. C语言之计算大数阶乘,如计算100!和1000!等~~~
  3. MySQL HAVING:指定过滤条件
  4. 【Python】PAT-1044 火星数字
  5. Candy Box (easy version)
  6. Linux的 .bashrc 和.bash_profile和.profile文件
  7. node设置跨域白名单
  8. windows python文件拷贝到linux上执行问题
  9. 一款好看+极简到不行的HTML5音乐播放器-skPlayer
  10. XMAPP多端口配置
  11. 华御上网行为管理FAQ
  12. 微信小程序圣诞帽_完成圣诞快乐Web应用程序界面
  13. 解决unable to find valid certification path to requested target
  14. 【计算机导论调研报告】计算机从业人员的职业道德
  15. 红米5a android 版本,#MIUI#关于红米手机4高配版 Android版本适配的说明【miui9吧】_百度贴吧...
  16. 创新驱动看广东,上云本领看云宏!全国30多家网媒齐聚云宏参访!
  17. 不得不说,这是青铜才需要了解的,绝地求生刺激战场段位保护解析
  18. BlackArch安装(译文)
  19. mysql 人员查询总结
  20. 三度进击IPO,诚达药业为何如此执着?

热门文章

  1. [翻译] OrigamiEngine
  2. 禁止用户复制网页的内容
  3. 嵌入式入门要知道的五个小窍门-心得
  4. 影响LAN/WAN方向流量的方法
  5. sdwan支持的网络设备类型
  6. 【Windows10】安装一些更新时出现问题,但我们稍后会重试
  7. 如何使scp命令在主机之间复制时不用输入密码
  8. (转)Java并发编程:线程池的使用
  9. 树结构(三)----线索二叉树
  10. SQLServer 常见高CPU利用率原因