gpt4 book ai didi

python - 使用 OpenCV 进行 Blob 检测

转载 作者:行者123 更新时间:2023-12-02 16:55:31 24 4
gpt4 key购买 nike

我正在尝试使用 OpenCV 进行一些白色 Blob 检测。但是我的脚本在检测到一些小 Blob 时未能检测到我的目标是大白 block 。我是 OpenCV 的新手,在 OpenCV 中使用 simpleblobdetection 时我做错了吗? [部分解决,请阅读下文]

这是脚本:

#!/usr/bin/python

# Standard imports
import cv2
import numpy as np;

from matplotlib import pyplot as plt

# Read image
im = cv2.imread('whiteborder.jpg', cv2.IMREAD_GRAYSCALE)
imfiltered = cv2.inRange(im,255,255)

#OPENING
kernel = np.ones((5,5))

opening = cv2.morphologyEx(imfiltered,cv2.MORPH_OPEN,kernel)

#write out the filtered image

cv2.imwrite('colorfiltered.jpg',opening)


# Setup SimpleBlobDetector parameters.
params = cv2.SimpleBlobDetector_Params()

params.blobColor= 255
params.filterByColor = True


# Create a detector with the parameters
ver = (cv2.__version__).split('.')
if int(ver[0]) < 3 :
detector = cv2.SimpleBlobDetector(params)
else :
detector = cv2.SimpleBlobDetector_create(params)


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

# Draw detected blobs as green circles.
# cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS ensures
# the size of the circle corresponds to the size of blob

print str(keypoints)

im_with_keypoints = cv2.drawKeypoints(opening, keypoints, np.array([]), (0,255,0), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)

# Show blobs
##cv2.imshow("Keypoints", im_with_keypoints)

cv2.imwrite('Keypoints.jpg',im_with_keypoints)

cv2.waitKey(0)

编辑 :

通过添加更大的面积最大值,我能够识别出一个大 Blob ,但我的最终目标是识别是否存在大的白色矩形。我所做的白色 Blob 检测不仅返回矩形,还返回周围区域。 [这部分解决了]

编辑 2:

根据@PSchn 的回答,我更新了我的代码以应用逻辑,首先将滤色器设置为仅获取白色像素,然后使用打开去除噪声点。它适用于样本数据,我可以在 Blob 检测后成功获得关键点。
enter image description here

最佳答案

如果您只想检测白色矩形,您可以尝试设置更高的阈值,例如253、用开口擦掉小物体,取最大的一团。我首先平滑您的图像,然后对其进行阈值处理:

enter image description here

和开幕式:

enter image description here

现在你只需要使用 findContours并采取boundingRect .如果你的矩形总是那么白,它应该可以工作。如果您的阈值低于 251,则会出现其他小 Blob ,并且您的区域与它们合并,如下所示:

enter image description here

然后你仍然可以打开几次,你会得到这个:
enter image description here

但我不认为这是最快的想法;)

关于python - 使用 OpenCV 进行 Blob 检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39457209/

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