使用OpenCV检测图像上的blob

时间:2016-05-11 12:28:01

标签: python opencv image-processing

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

我已阅读How to use OpenCV SimpleBlobDetectorhttp://www.learnopencv.com/blob-detection-using-opencv-python-c/但仍无法通过简单图片获得任何结果。

enter image description here

这是我在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评论后更新了代码

2 个答案:

答案 0 :(得分:1)

  

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

我的目标可以通过sklearn.measure.label达成。此函数返回一个numpy数组,其中包含每个连接区域的相同形状和标签。

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

答案 1 :(得分:0)

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

params.filterByArea = False