openCV 中的 Blob Detection 效果很好,但由于某些原因它无法检测特定图像

Blob Detection in openCV works well, but for some reason it fails for a specific image

由于 openCV (4.2.0.34) 中 SimpleBlobDetector_create 的内置功能,我很容易找到圆圈,我确保背景为白色以便于识别。 在下图中,如我所料,发现了 3 个圆圈: 但出于某种奇怪的原因,当我在下图中应用相同的代码时,

无法识别这个完美的圆。怎么会??

下面是我的短代码。

img = cv2.imread(filename='img1.png')

cv2.imshow(winname="Original", mat=img)
cv2.waitKey(0)

params = cv2.SimpleBlobDetector_Params()

# set Circularity filtering parameters:
params.filterByCircularity = True
# 1 being perfect circle, 0 the opposite
params.minCircularity = 0.8

# create a detector with parameters
detector = cv2.SimpleBlobDetector_create(parameters=params)

keypoints = detector.detect(img)

print("Number of circular Blobs: " + str(len(keypoints)))

感谢大家的帮助!

我在这里测试了你的代码并得到了相同的结果。但是添加

params.filterByArea = False

params.filterByCircularity = True 之前解决了这个问题。这有点奇怪,因为我希望 SimpleBlobDetector 中的所有其他属性默认以 False 开头。此外,更改后代码开始响应 4 个圆圈(这对我来说似乎是正确的)而不是以前的 3 个。