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

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

3天内不再提示

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

新机器视觉 来源:OpenCV学堂 作者:OpenCV学堂 2021-05-28 09:16 次阅读

什么是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区域,然后提取。

实际应用演示

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

编辑:jq

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

    关注

    2

    文章

    1436

    浏览量

    61232
  • 代码
    +关注

    关注

    30

    文章

    4596

    浏览量

    67329
  • OpenCV
    +关注

    关注

    29

    文章

    614

    浏览量

    40907
  • mask
    +关注

    关注

    0

    文章

    9

    浏览量

    2876

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

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

收藏 人收藏

    评论

    相关推荐

    三维扫描产品外观提取不规则外观轮廓线辅助贴纸设计方案

    三维扫描技术是集光学、机电和计算机技术于一体的高新无损检测技术。CASAIM三维扫描设备,能够对实物的空间外形、结构乃至色彩进行全方位的扫描,将复杂的立体信息快速转换为计算机能直接处理的数字信号。这一技术能够精确地获取物体表面的空间坐标,为实物提取轮廓线提供了快捷、精确及方便的手段。
    的头像 发表于 06-11 15:58 76次阅读
    三维扫描产品外观<b class='flag-5'>提取</b><b class='flag-5'>不规则</b>外观轮廓线辅助贴纸设计方案

    嵌入式学习-飞凌ElfBoard ELF 1板卡 - 如何在Ubuntu编译OpenCV

    在之前发布的文章探讨了交叉编译OpenCV并部署至嵌入式系统的方法。然而,在调试阶段,我们发现在 Ubuntu 环境下将 OpenCV 编译为 X86 架构可能更加方便和高效。 通过在主机上编译并
    发表于 06-07 09:21

    AD芯片采用外部时钟时,外部时钟源可以是不规则的TTL电平吗?

    AD芯片采用外部时钟时,外部时钟源可以是不规则的TTL电平吗? 该TTL电平具体表现为,频率由低到高,再由高到低,最大100K,每一个电平高电平是恒定的,低电平在不停的变化。 这样的TTL电平能作为AD芯片的采样时钟吗
    发表于 12-22 08:31

    对于形状近似矩形但边缘有规则起伏的情况,可以使用OpenCV的approxPolyDP函数进行多边形拟合和矩形检测。

    对于形状近似矩形但边缘有规则起伏的情况,可以使用OpenCV的approxPolyDP函数进行多边形拟合和矩形检测。 approxPolyDP函数通过在给定的点集上使用动态规划算法,计算出近似
    发表于 11-01 09:23

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

    等,而且这些ROI区域往往不是矩形区域,一般都是不规则的多边形区域,很多OpenCV初学者都不知
    的头像 发表于 10-31 14:51 639次阅读

    怎么测不规则正弦波交流电压?

    怎么测不规则正弦波交流电压
    发表于 10-16 06:39

    OpenCV的BGR格式,在libyuv对应的那个格式?OpenCV的RGB格式呢?

    OpenCV的BGR格式,在libyuv对应的那个格式?OpenCV的RGB格式呢?
    发表于 09-19 06:00

    【触觉智能 Purple Pi OH 开发板体验】三、Ubuntu镜像安装OpenCV边缘检测开发

    的缺陷检测程序实现的步骤: 1.**确定目标和定义缺陷**:首先,需要明确什么是缺陷。例如,在制造业,缺陷可能是产品的裂缝、气泡、或者形状的不规则。在网络安全领域,缺陷可能是软件
    发表于 09-09 13:20

    用迅为RK3568开发板使用OpenCV处理图像颜色通道提取ROI

    到 img 变量, img = cv2.imread(\'lena.png\',1) 在上一小节通过对 img 变量数组的前两个参数进行范围设定,以此进行位置提取,而第三个参数是
    发表于 09-01 10:45

    迅为RK3568开发板位置提取ROI

    存储的数组设定范围,进行位置提取以此来设定 ROI,例如使用以下 命令展示 x 区域范围为[300,500],y 区域范围为[200,400]的图像 cv2.imshow(\'img\
    发表于 08-28 14:28

    不规则透明屏:在商场领域中,图像显示清晰吗?

    随着透明显示技术和投影技术的不断进步,不规则透明屏的成本也会逐渐降低,更加适合大规模应用。不规则透明屏是一种新型的显示技术,具有广泛的应用前景。它可以应用于广告、展览、商场等领域,提供更加丰富的显示效果。
    的头像 发表于 08-22 10:19 326次阅读
    <b class='flag-5'>不规则</b>透明屏:在商场领域中,图像显示清晰吗?

    无法在OpenVINO trade Docker运行OpenCV怎么解决?

    /dev/dri:/dev/dri \\ -v /docker-share/public:/public \\ openvino/ubuntu20_dev:latest 使用包含 OpenCV
    发表于 08-15 08:29

    opencv_videoio_ffmpeg_64.dll缺失,无法在OpenVINO trade配置OpenCV怎么处理?

    ] global C:\\jenkins\\workspace\\OpenCV\\OpenVINO\\2021.4\\build\\windows\\opencv\\modules\\videoio
    发表于 08-15 08:24

    使用OpenVINO包含的OpenCV时无法导入ArUco库如何解决?

    使用OpenVINO™包含的 OpenCV。 导入了搭载 Python 的 ArUco 库。 收到错误:ModuleNotFoundError: No module named \'cv2.aruco\'
    发表于 08-15 07:30

    1mm不规则形状钣金件罩壳叠料检测解决方案-阿童木双张检测器

    的质量享有良好的声誉。项目需求:最近,客户向阿童木提出了一个具有挑战性的项目需求。该客户的机器人设备需要对吸盘吸取的钣金件罩壳进行叠料检测。这些钣金件罩壳是不规则形状
    的头像 发表于 07-19 14:51 328次阅读
    1mm<b class='flag-5'>不规则</b>形状钣金件罩壳叠料检测解决方案-阿童木双张检测器