首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何有效地识别numpy数组中的“相似-HSV- to -相邻”像素?

如何有效地识别numpy数组中的“相似-HSV- to -相邻”像素?
EN

Stack Overflow用户
提问于 2021-10-19 02:42:33
回答 1查看 59关注 0票数 0

我的图像(np.array与形状[Y] [X] [RGB]包含字形图形,形成类似-HSL像素的区域.)例如(放大):

我试图识别文本的HSL值。

将所有像素都扔到scikit的kmeans中可能会奏效,因为它会返回集群。

但是我需要效率。如果我可以首先限制像素设置为“有8个相似的HSL邻居”,这将大大提高性能。

类似于:

代码语言:javascript
运行
复制
hsv = cv2.cvtColor(S, cv2.COLOR_RGB2HSV)
hues = hsv[:,:,0]

THRESH = 3
isclose = lambda hues_matrix_A, hues_matrix_B): \
    np.abs(hues_matrix_B - hues_matrix_A) < THRESH
mask = 
    is_close(hues, np.roll(hues,-1, axis=0)) & 
    is_close(hues, np.roll(hues,+1, axis=0)) & 
    is_close(hues, np.roll(hues,-1, axis=1)) & 
    is_close(hues, np.roll(hues,+1, axis=1)) 

这样做的上/下/左/右邻居,它已经是丑陋的。理想情况下,我也会对对角线邻居进行测试,但这需要一个2轴的roll

代码语言:javascript
运行
复制
top_left_neighbour = np.roll(np.roll(hues,-1, axis=1),-1, axis=0)

伊克。这份工作有什么工具吗?接口可能如下所示:

代码语言:javascript
运行
复制
mask = proximity_mask(src=hues_matrix, kernel=np.ones((3,3)), proximity=3)

如果没有,什么是智能建筑?

EN

回答 1

Stack Overflow用户

发布于 2021-10-19 03:26:28

从numpy 1.20+你有视图

代码语言:javascript
运行
复制
# size will be 1-pixel less on each side
hue_nbhds = np.lib.stride_tricks.sliding_window_view(
    hue, (3,3)
)

# reshape to 3D
hue_nbhds = hue_nbhds.reshape(*hue_nbhds.shape[:2], -1)

# 
mask = (np.abs(hue_nbhds - hue[1:-1,1:-1, None]) < 3).all(-1)

但是你从面具中得到的东西并不多:

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

https://stackoverflow.com/questions/69624533

复制
相关文章

相似问题

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