gpt4 book ai didi

python - 为什么我不能对这个二进制图像进行 Blob 检测

转载 作者:太空宇宙 更新时间:2023-11-03 12:56:38 25 4
gpt4 key购买 nike

首先,现在我正在使用 Python2.7 和 Opencv 进行 Blob 检测。我想要做的是在颜色检测之后完成 Blob 检测。我想检测红色圆圈(标记),为了避免其他 Blob 干扰,我想先进行颜色检测,然后再进行 Blob 检测。

颜色检测后的图像为binary mask

现在我想对此图像进行 Blob 检测,但它不起作用。这是我的代码。

import cv2
import numpy as np;

# Read image
im = cv2.imread("myblob.jpg", cv2.IMREAD_GRAYSCALE)

# Set up the detector with default parameters.

params = cv2.SimpleBlobDetector_Params()
# Change thresholds
params.minThreshold = 10; # the graylevel of images
params.maxThreshold = 200;

params.filterByColor = True
params.blobColor = 255

# Filter by Area
params.filterByArea = False
params.minArea = 10000

detector = cv2.SimpleBlobDetector(params)


# Detect blobs.
keypoints = detector.detect(im)

# Draw detected blobs as red circles.
# cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS ensures the size of the circle corresponds to the size of blob
im_with_keypoints = cv2.drawKeypoints(im, keypoints, np.array([]), (0,0,255), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)

# Show keypoints
cv2.imshow("Keypoints", im_with_keypoints)
cv2.waitKey(0)`

这段代码让我很困惑,因为它适用于这张图片 white dots我认为白点图像与二进制掩码非常相似,但为什么我不能对二进制图像进行 Blob 检测?谁能告诉我区别或正确的代码?

谢谢!!

问候,楠

最佳答案

看起来 Blob 检测器默认启用了 filterByInertiafilterByConvexity 参数。您可以在您的系统中检查:

import cv2
params = cv2.SimpleBlobDetector_Params()
print params.filterByColor
print params.filterByArea
print params.filterByCircularity
print params.filterByInertia
print params.filterByConvexity

因此,当您调用 detector = cv2.SimpleBlobDetector(params) 时,您实际上也在使用默认的最小值和最大值按惯性和凸性进行过滤。

如果您明确禁用这些过滤条件:

# Disable unwanted filter criteria params
params.filterByInertia = False
params.filterByConvexity = False

... 然后调用 detector = cv2.SimpleBlobDetector(params) 你会得到下图: blobing result

该图像中的第三个 Blob 是由图像右下角的白框引起的。如果帧始终位于同一位置,您可以裁剪图像,或者您可以使用参数按圆度过滤并删除不需要的 Blob :

params.filterByCircularity = True
params.minCircularity = 0.1

你最终会得到:

enter image description here

关于python - 为什么我不能对这个二进制图像进行 Blob 检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39083360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com