gpt4 book ai didi

python - opencv blob 检测,缺少一些 blob

转载 作者:行者123 更新时间:2023-12-02 17:37:46 27 4
gpt4 key购买 nike

import cv2
import numpy as np

im_m = cv2.imread("primary.png", cv2.IMREAD_GRAYSCALE)

# 50, 130

# Otsu's thresholding after Gaussian filtering
blur = cv2.GaussianBlur(im_m,(25,25),0)
#(thresh, im2) = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
# Black region overflowing into digit regions with otsu

(thresh, im) = cv2.threshold(im_m, 55, 130, cv2.THRESH_BINARY)

kernel = np.ones((5,5), np.uint8)

img_dilation = cv2.dilate(im, kernel, iterations=1)
img_erosion = cv2.erode(img_dilation, kernel, iterations=1)


params = cv2.SimpleBlobDetector_Params()


params.minThreshold = 10;
params.maxThreshold = 225;


params.filterByArea = True
params.minArea = 100
params.maxArea = 1500


params.filterByCircularity = False
params.minCircularity = 0.5


params.filterByConvexity = False
params.minConvexity = 0.2


params.filterByInertia = False
params.minInertiaRatio = 0.01


ver = (cv2.__version__).split('.')
if int(ver[0]) < 3 :
detector = cv2.SimpleBlobDetector(params)
else :
detector = cv2.SimpleBlobDetector_create(params)



keypoints = detector.detect(im)


im_key = cv2.drawKeypoints(im, keypoints, np.array([]), (0,0,255), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)




cv2.imshow("Keypoints", im_key)
cv2.imshow("Erosion", img_erosion)
cv2.imshow("Dilation", img_dilation)
cv2.waitKey(0)

我对使用 opencv 进行图像处理非常陌生。我正在尝试从嘈杂的图像中检测数字。

Input Image

我做了一些实验,调整阈值并按参数过滤,但无法检测到具有 3、4、0 和有时 5、7 和 2 的 Blob 。我只需要检测数字。对于此任务,除了 Blob 检测之外,还有其他更好的方法吗?

Output Image

最佳答案

一般来说,您应该尝试为大多数参数使用不同的值。我通常有一个带有一些滚动条的 GUI,以便交互式地修改参数。

在你的情况下,我猜 maxarea 太小了。您可以将其设为 10000,如果有效,则将其缩小,直到它开始失败。如果它不起作用,您可以尝试缩小 minarea。

我认为您没有其他参数,但是如果有,则应禁用所有过滤器,使所有范围更宽,然后一一启用并缩小它们(始终查看图像结果)

关于python - opencv blob 检测,缺少一些 blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48509138/

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