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

我试图识别文本的HSL值。
将所有像素都扔到scikit的kmeans中可能会奏效,因为它会返回集群。
但是我需要效率。如果我可以首先限制像素设置为“有8个相似的HSL邻居”,这将大大提高性能。
类似于:
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。
top_left_neighbour = np.roll(np.roll(hues,-1, axis=1),-1, axis=0)伊克。这份工作有什么工具吗?接口可能如下所示:
mask = proximity_mask(src=hues_matrix, kernel=np.ones((3,3)), proximity=3)如果没有,什么是智能建筑?
发布于 2021-10-19 03:26:28
从numpy 1.20+你有视图
# 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)但是你从面具中得到的东西并不多:

https://stackoverflow.com/questions/69624533
复制相似问题