如何在OpenCV中使用SimpleBlobDetector?

时间:2013-06-18 12:48:03

标签: c++ opencv computer-vision feature-detection

SimpleBlobDetector实际上做了什么?

它给我一些回报,但这些点是什么?

斑点检测器是否找到具有相似属性的图像区域,包括颜色?

我可以检索找到的斑点的轮廓吗?我在Web上的一些示例中看到了detectEx函数调用,但在OpenCV 2.4.5中没有看到这样的函数。现在用什么代替这个函数?

更新

以下是文档中描述blob检测算法的方法:

  1. 通过应用阈值将源图像转换为二进制图像 从minThreshold(包括)到几个阈值 maxThreshold(不包括),其间距离为thresholdStep 邻近的门槛。
  2. 从每个提取连接的组件 通过findContours()生成二进制图像并计算它们的中心。
  3. 根据坐标从多个二进制图像中心分组。关 中心形成一个对应于一个blob的组,即 由minDistBetweenBlobs参数控制。
  4. 从小组中,估计斑点及其半径的最终中心并返回为 关键点的位置和大小。
  5. 目前尚不清楚斑点应该是圆形的!

1 个答案:

答案 0 :(得分:4)

它返回的点是图像中斑点的中心。假设blob是圆形的,并且大小存储为使用detect()函数获得的输出向量中的关键点的大小。您可以使用链接中指定的基于颜色的过滤来指定要查找的blob的颜色。设置filterByColor = true并在blobColor中指定您要查找的颜色。

如果您正在寻找轮廓,则需要将过程分解为更精细的步骤。获得二进制图像的第一个阈值。然后在OpenCV中使用findContours函数。