gpt4 book ai didi

python - 在 opencv 中使用 MSER 检测灰度图像上的白色 Blob

转载 作者:太空宇宙 更新时间:2023-11-03 21:06:44 24 4
gpt4 key购买 nike

我的图片大部分是黑色的,上面有一些白色的 Blob 。我想将此类图像与没有此类 Blob 的图像区分开来。

我尝试了 MSER 并调整了它的参数,以便在大多数有 Blob 的图像中正确检测 Blob ,并在没有 Blob 的图像中返回 0 结果。

这是我的 MSER 参数配置。

mser = cv2.MSER_create(_delta = 3,_min_diversity=0.2,_edge_blur_size = 5 ,_max_variation = 0.10,_min_area = 120,_max_area = 1000)

下面是一张测试图:

test image

未检测到顶部的白色区域。

最佳答案

这里有两种更简单的方法,而不是使用 MSER

方法#1

将图像转换为灰度和 Otsu 的阈值以获得二值图像。然后找到轮廓并使用最小阈值区域进行过滤。根据您要检测的白色 Blob 的数量,您可以调整此阈值区域。这是检测到的白色区域以绿色突出显示的结果

enter image description here

import cv2

image = cv2.imread('1.png')
original = image.copy()
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]

cnts = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
for c in cnts:
area = cv2.contourArea(c)
if area > 50:
cv2.drawContours(original, [c], -1, (36, 255, 12), -1)

cv2.imshow('thresh', thresh)
cv2.imshow('original', original)
cv2.imwrite('original.png', original)
cv2.waitKey()

方法#2

由于 OpenCV 图像存储为 Numpy 数组,我们可以简单地使用切片来创建大于某个阈值的像素掩码。这是结果

enter image description here

import cv2

image = cv2.imread('1.png')
mask = (image >= [150.,150.,150.]).all(axis=2)
image[mask] = [36, 255, 12]

cv2.imshow('image', image)
cv2.waitKey()

关于python - 在 opencv 中使用 MSER 检测灰度图像上的白色 Blob ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57767518/

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