【问题标题】:Detecting blobs on image with OpenCV使用 OpenCV 检测图像上的斑点
【发布时间】:2019-05-05 06:02:35
【问题描述】:

我想为图像上的每个白色区域获取一些描述符,以过滤这些区域并分别对它们进行操作。我该怎么做?

我已经阅读了How to use OpenCV SimpleBlobDetectorhttp://www.learnopencv.com/blob-detection-using-opencv-python-c/,但我的简单图像仍然无法得到任何结果。

这是我在 python 中的代码

img = cv2.imread("map.jpg", cv2.IMREAD_GRAYSCALE)
params = cv2.SimpleBlobDetector_Params()
params.blobColor = 255
params.filterByColor = True
params.minArea = 16
params.filterByArea = True
detector = cv2.SimpleBlobDetector_create(params)
keypoints = detector.detect(255 - img)
len(keypoints)
# 0

OpenCV 3.1.0

图像是灰度的。

UPD:在@api55 的评论之后更新了代码

【问题讨论】:

  • 您需要传递 blob 参数,将 blobColor 设置为 255 并将按颜色过滤为 true。默认情况下,它会尝试在白色背景中查找深色斑点。或者你可以反转图像的颜色
  • @api55 我已经更新了代码(也在帖子中)但仍然没有结果
  • 尝试将 minArea 参数也更改为较小的值,例如 16(大约 4x4 像素块)。在教程中,它说按颜色过滤不起作用(不确定你有什么版本)......你可以尝试反转图像颜色
  • @api55 没有任何改变
  • 请尝试(更新)代码here

标签: python opencv image-processing


【解决方案1】:

我想为图像上的每个白色区域获取一些描述符,以过滤这些区域并分别对它们进行操作。我该怎么做?

我的目标可以通过sklearn.measure.label 实现。此函数返回一个 numpy 数组,每个连接区域具有相同的形状和标签。

但无论如何,仍然不清楚为什么来自 OpenCV 的 SimpleBlobDetector 不起作用。

【讨论】:

【解决方案2】:

我遇到了同样的问题。我不得不删除 fiterbyarea 参数:

params.filterByArea = False

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 2014-05-13
    • 1970-01-01
    • 2019-01-17
    • 2017-07-01
    • 1970-01-01
    相关资源
    最近更新 更多