简单的斑点检测器不会检测到大斑点

Posted

技术标签:

【中文标题】简单的斑点检测器不会检测到大斑点【英文标题】:Simple blob detector won't detect big blobs 【发布时间】:2019-03-18 02:34:59 【问题描述】:

我遇到了 Simple Blob Detector 无法检测到大于 300 的 Blob 的问题。

我有这张图片,里面有一个乐高积木,但无论我给它哪个区域,它都不会检测到它。有任何想法吗?我正在尝试获取乐高的颜色,但我想过滤掉其他所有内容

params = cv2.SimpleBlobDetector_Params()
params.filterByArea = True
params.minArea = 500 # Tried using from 300 - 3000 and can't get a detection
params.filterByCircularity = False
params.filterByColor = False
params.filterByConvexity = False
params.filterByInertia = False
detector = cv2.SimpleBlobDetector_create(params)
keypoints = detector.detect(img)

【问题讨论】:

也许您需要将输入图像读取为灰度。另见***.com/questions/8076889/… @fmw42 BGR 图像会自动转换为灰度,因此除非您想在特定通道中检测,否则无需显式执行此操作。 @Piglet 这对我来说没有意义。这是什么命令?读取彩色图像时,读取命令必须指定转换为灰度,否则所有彩色图像都会变成灰度。 【参考方案1】:

您的参数不足。搜索任何东西都不是一个好主意。您应该始终添加尽可能多的约束。

我建议您添加更多参数。我通过简单地添加 100000 的 maxArea 找到了你的砖块。

500 的 minArea 对我来说没有多大意义,因为最小的乐高零件会远远超过这个。

【讨论】:

以上是关于简单的斑点检测器不会检测到大斑点的主要内容,如果未能解决你的问题,请参考以下文章

斑点检测

使用 OpenCV 进行斑点检测

OpenCV blob(斑点)特征,SimpleBlobDetector

OpenCV 检测图像上的斑点

检测图像中的噪声/伪影

如何强制 simpleblobdetector 仅在轮廓区域内搜索?