openCV中的斑点检测效果很好,但是由于某些原因,它对于特定图像失败

问题描述 投票:0回答:1

感谢openCV(4.2.0.34)中SimpleBlobDetector_create的内置功能,我设法轻松地找到了圈子,我确保背景为白色以便于识别。在下图中,发现了3个圆圈,正如我期望的那样:enter image description here但是出于某种原因,当我在下面的图片中应用相同的代码时,

enter image description here

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

下面是我的短代码。

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)))

谢谢大家的帮助!

opencv image-recognition
1个回答
2
投票
params.filterByArea = False

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

Match 4 circles
© www.soinside.com 2019 - 2024. All rights reserved.