蓝字关注我们
微信公众号:OpenCV学堂
关注获取更多计算机视觉与深度学习知识
概述
Blob检测在传统灰度图像分析与测量中是常用功能之一,Blob检测可以快速从灰度图像中定位跟提取各种常见的几何形状,可以根据面积、灰度值、圆度、凸度、惯量进行过滤得到符合需求的各种Blob形状,实现检测的定位与检测。支持的五种度量过滤图示如下:
OpenCV中支持函数
OpenCV中已经实现了Blob对象检测算法,对应的函数如下:
// 支持的五种过滤方式
// 每种方式的最小与最大参数阈值
其中 圆度、凸度、惯量的取值范围均为[0, 1]之间。输入灰度图像,调用之后输出的是KeyPoint数据结构的List,其中KeyPoint结构中pt表示返回的每个Blob的中心位置,size表示宽度/直径。
案例:Blob分析
创建Blob对象与初始化参数设置的代码如下:
# 圆度过滤, 取值范围 0 ~ 1params.filterByCircularity = False params.minCircularity = 0.8params.maxCircularity = 1.0
# 颜色过滤params.filterByColor = True params.minThreshold = 50params.maxThreshold = 100
# 凸度过滤, 取值范围 0 ~ 1params.filterByConvexity = False params.minConvexity = 0.98params.maxConvexity = 0.99
# 惯量过滤, 取值范围 0 ~ 1params.filterByInertia = False params.minInertiaRatio = 0.8params.maxInertiaRatio = 1.0
detector = cv.SimpleBlobDetector.create( params)
检测代码与运行结果如下:
运行结果如下:
根据面积过滤的Blob分析结果如下:1000~2000
根据圆度过滤的Blob分析结果如下0~0.7:
根据圆度过滤的Blob分析结果如下0.8~1.0:
根据凸度过滤的Blob分析结果如下0.98~1.0:
找到了唯一没有缺口的圆
根据惯量过滤的Blob分析结果如下0.0~0.2:
直线的惯量接近于0, 圆的惯量接近于1
联系客服