常州机器视觉培训

常州上位机软件开发

常州工业机器人编程设计培训

常州PLC培训

常州PLC

常州PLC编程培训

常州电工培训

常州和讯plc培训中心欢迎您!
热门课程
联系方式
  • 常州和讯自动化培训中心
  • 常州市新北区府琛商务广场2号楼1409室
  • 电话:0519-85602926
  • 手机:15861139266 13401342299
当前位置:网站首页 > 新闻中心 新闻中心
Opencv之如何提取ROI-常州机器视觉学习,常州上位机学习
日期:2024-5-17 16:22:40人气:  标签:常州机器视觉学习 常州上位机学习

什么是ROI


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


提取ROI区域


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

image.png

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


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


方法一:


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


import cv2 as cv

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

运行效果如下:

image.png

方法二:


这个也是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)

效果如下:

image.png

主要是分为三步


提取轮廓ROI


生成Mask区域


提取指定轮廓


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


实际应用演示


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

image.png

本文网址:
下一篇:没有资料

相关信息:
版权所有 CopyRight 2006-2017 江苏和讯自动化设备有限公司 常州自动化培训中心 电话:0519-85602926 地址:常州市新北区府琛商务广场2号楼1409室
苏ICP备14016686号-2 技术支持:常州山水网络
本站关键词:常州PLC培训 常州PLC编程培训 常州PLC编程 常州PLC培训班 网站地图 网站标签
在线与我们取得联系