Python 基于OpenCV的图像斑点检测

Python 基于OpenCV的图像斑点检测,python,opencv,image-processing,Python,Opencv,Image Processing,我想为图像上的每个白色区域获取一些描述符,以过滤这些区域并单独使用它们。我怎么做 我已经读过了,但是仍然不能用我的简单图像得到任何结果 这是我用python编写的代码 img = cv2.imread("map.jpg", cv2.IMREAD_GRAYSCALE) params = cv2.SimpleBlobDetector_Params() params.blobColor = 255 params.filterByColor = True params.minArea = 16 par

我想为图像上的每个白色区域获取一些描述符,以过滤这些区域并单独使用它们。我怎么做

我已经读过了,但是仍然不能用我的简单图像得到任何结果

这是我用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发表评论后更新

我想为图像上的每个白色区域获取一些描述符,以过滤这些区域并单独使用它们。我怎么做

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


但无论如何,OpenCV的SimpleBlobDetector为什么不能工作还不清楚。

我也遇到了同样的问题。我必须删除fiterbyarea参数:

params.filterByArea = False

您需要传递blob参数,将blobColor设置为255,并将“按颜色过滤”设置为true。默认情况下,它尝试在白色背景中查找黑色斑点。或者你也可以把颜色颠倒过来image@api55我已经更新了代码(也在帖子中),但仍然没有结果,我还将minArea参数更改为一些小参数,比如16(大约4x4像素)。在本教程中,它说“按颜色过滤”不起作用(不确定您的版本)。。。。您可以尝试反转图像colors@api55无任何更改请尝试(更新的)代码尝试浏览blob检测。