0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenCV初学者如何提取这些不规则的ROI区域

新机器视觉 来源:新机器视觉 2023-10-31 14:51 次阅读

什么是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区域生成。

方法一:

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

importcv2ascv
importnumpyasnp

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).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)

主要是分为三步

提取轮廓ROI

生成Mask区域

提取指定轮廓

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

编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 图像处理
    +关注

    关注

    26

    文章

    1224

    浏览量

    55823
  • API
    API
    +关注

    关注

    2

    文章

    1382

    浏览量

    60991
  • 函数
    +关注

    关注

    3

    文章

    3868

    浏览量

    61308
  • OpenCV
    +关注

    关注

    29

    文章

    611

    浏览量

    40774
  • ROI
    ROI
    +关注

    关注

    0

    文章

    13

    浏览量

    6181

原文标题:OpenCV中如何提取不规则ROI区域

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    怎么提取彩色图像ROI区域的RGB值

    怎么提取彩色图像ROI区域的RGB值
    发表于 08-24 17:58

    如何对不规则ROI区域内进行灰度值分析?

    `请问一下,我想提取一张图片中一个不规则ROI区域,并对ROI内部的灰度值进行分析,但是一定不能用RO
    发表于 10-29 13:49

    初学者之路—硬件学习经验

    初学者之路—硬件学习经验一文是一位搞硬件的在校研究生写的,希望对那些初学者之路电脑网等处于迷茫的硬件初学者学习之路有所帮助!
    发表于 12-29 10:20 1.4w次阅读

    编程及C C++初学者+FAQ

    编程及C C++初学者+FAQ
    发表于 09-06 14:55 80次下载

    电子初学者电路图如何看

    电子初学者的指南,介绍了好些东西,都是最基础的。适合于初学者
    发表于 11-23 12:05 0次下载

    从51初学者到电子工程师

    51初学者的学习指导,对51初学者是个很好的入门教程,
    发表于 02-23 15:53 0次下载

    初学者如何看电路图

    初学者如何看电路图,拆解电路分步讲解!
    发表于 04-19 10:37 69次下载

    初学者的avr基础教程

    初学者的avr基础教程
    发表于 09-21 08:45 14次下载

    初学者边用边学C语言

    初学者边用边学C语言
    发表于 09-22 10:14 16次下载
    <b class='flag-5'>初学者</b>边用边学C语言

    PSOC1初学者5个实验,针对初学者的实验

    PSOC1初学者5个实验,针对初学者的实验
    发表于 10-16 09:33 14次下载
    PSOC1<b class='flag-5'>初学者</b>5个实验,针对<b class='flag-5'>初学者</b>的实验

    linux初学者入门

    linux初学者入门
    发表于 10-27 14:34 13次下载
    linux<b class='flag-5'>初学者</b>入门

    R语言初学者指南 pdf下载

    R初学者指南
    发表于 02-26 09:35 13次下载

    简述OpenCV中如何提取不规则ROI区域

    、测量、计算密度等,而且这些ROI区域往往不是矩形区域,一般都是不规则的多边形区域,很多
    的头像 发表于 05-28 09:16 2100次阅读

    FPGA初学者必读文档

    FPGA初学者必读文档(嵌入式开发适合哪个城市)-FPGA初学者必读文档,为学习FPGA做好准备。
    发表于 08-04 11:39 32次下载
    FPGA<b class='flag-5'>初学者</b>必读文档

    初学者的基本LED设置

    电子发烧友网站提供《初学者的基本LED设置.zip》资料免费下载
    发表于 11-22 10:14 3次下载
    <b class='flag-5'>初学者</b>的基本LED设置