SimpleBlobDetector 类


  • public class SimpleBlobDetector
    extends Feature2D
    用于从图像中提取斑点的类。此类实现了一个简单的算法,用于从图像中提取斑点:1. 通过使用从 minThreshold(包含)到 maxThreshold(不包含)的多个阈值以及相邻阈值之间的距离 thresholdStep 应用阈值处理,将源图像转换为二值图像。2. 通过 findContours 从每个二值图像中提取连通分量并计算其中心。3. 根据它们的坐标对来自多个二值图像的中心进行分组。接近的中心形成一个对应于一个斑点的组,这由 minDistBetweenBlobs 参数控制。4. 从这些组中,估计斑点的最终中心及其半径,并将其作为关键点的坐标和大小返回。此类对返回的斑点执行几次过滤。您应该将 filterBy\* 设置为 true/false 以打开/关闭相应的过滤。可用的过滤:
    • 按颜色。此过滤器将二值图像中斑点中心处的强度与 blobColor 进行比较。如果它们不同,则会过滤掉该斑点。使用 blobColor = 0 来提取暗斑点,使用 blobColor = 255 来提取亮斑点。
    • 按面积。提取的斑点的面积介于 minArea(包含)和 maxArea(不包含)之间。
    • 按圆度。提取的斑点的圆度(\(\frac{4*\pi*Area}{perimeter * perimeter}\))介于 minCircularity(包含)和 maxCircularity(不包含)之间。
    • 按最小惯性与最大惯性的比率。提取的斑点的此比率介于 minInertiaRatio(包含)和 maxInertiaRatio(不包含)之间。
    • 按凸度。提取的斑点的凸度(面积 / 斑点凸包的面积)介于 minConvexity(包含)和 maxConvexity(不包含)之间。
    参数的默认值经过调整,可以提取暗圆形斑点。