首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >二值图像的blob检测图像处理

二值图像的blob检测图像处理
EN

Stack Overflow用户
提问于 2022-06-09 18:54:37
回答 1查看 280关注 0票数 0

我的blob探测器没有给我的二值图像着色。有人能解释这个问题吗?

代码:

代码语言:javascript
复制
## mask of yellow color
mask_yellow = cv2.inRange(Img, (0, 180, 240), (20, 255, 255))

#define kernel size
kernel = np.ones((15,15), np.uint8)
# Remove unnecessary noise from mask
mask_yellow = cv2.morphologyEx(mask_yellow, cv2.MORPH_CLOSE, kernel)
mask_yellow = cv2.morphologyEx(mask_yellow, cv2.MORPH_OPEN, kernel)

#scale window size
mask_yellow_view = cv2.resize(mask_yellow, dsize)

#show yellow colors
cv2.imshow('Yellow mask', mask_yellow_view)

mask_yellow = cv2.bitwise_not(mask_yellow)

mask_yellow = cv2.cvtColor(mask_yellow, cv2.COLOR_GRAY2RGB)

params = cv2.SimpleBlobDetector_Params()

params.filterByArea = True
params.minArea = 10000

detector = cv2.SimpleBlobDetector_create(params)
keypoints = detector.detect(mask_yellow)

blank = np.zeros((20, 20))
blobs = cv2.drawKeypoints(mask_yellow, keypoints, blank, (0, 0, 255),cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)


# Show keypoints
cv2.imshow("Keypoints", blobs)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-09 21:15:34

对我来说你的代码很好。下面是我使用的简化代码和示例输入输出图像。在我的例子中,params.minArea阈值太高,所以我不得不降低它。请检查您的过滤标准是否符合您的输入!

代码语言:javascript
复制
import cv2

img = cv2.imread("img.png")

# mask of yellow color
mask_yellow = cv2.inRange(img, (0, 180, 240), (20, 255, 255))
mask_yellow = cv2.bitwise_not(mask_yellow)
mask_yellow = cv2.cvtColor(mask_yellow, cv2.COLOR_GRAY2RGB)

params = cv2.SimpleBlobDetector_Params()

params.filterByArea = True
params.minArea = 1000

detector = cv2.SimpleBlobDetector_create(params)
keypoints = detector.detect(mask_yellow)

blobs = cv2.drawKeypoints(mask_yellow, keypoints, 0, (0, 0, 255), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)

cv2.imwrite("out.png", blobs)

输入图像:

输出图像:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72565299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档