上期毛毛虫问题的答案:
def find_slim_segments(widths: list):
slim_locations = []
temp = []
last_is_low = False
for i in range(1, len(widths)):
if widths[i] < widths[i - 1]:
temp = []
temp.append(i)
last_is_low = True
elif widths[i] == widths[i - 1]:
if last_is_low:
temp.append(i)
else:
if len(temp) > 0:
slim_locations.append(temp)
temp = []
last_is_low = False
return slim_locations这个小算法可以用于图像分割。如下图,各斑块儿之间有桥接,连通域算法不奏效。这个简单算法反而可以分割它。

分割结果展示:

以下是为了凑字数
[21, 23, 23, 23, 21, 20, 24, 22, 23, 24, 23, 23, 22, 23, 22, 21, 22, 21, 21, 22, 24, 21, 21, 20, 24, 20, 20, 23, 21, 24, 24, 24, 21, 22, 21, 23, 24, 20, 23, 23, 24, 22, 21, 21, 24, 20, 21, 20, 23, 21]
[[5], [7], [12], [15], [17, 18], [23], [25, 26], [28], [32], [34], [37], [42, 43], [45], [47]]
[21, 23, 20, 21, 20, 20, 21, 23, 22, 21, 21, 23, 22, 24, 20, 22, 22, 22, 22, 22, 22, 20, 23, 23, 21, 22, 24, 21, 22, 23, 23, 21, 20, 22, 24, 21, 21, 20, 21, 23, 22, 23, 23, 23, 21, 24, 23, 23, 23, 20]
[[2], [4, 5], [9, 10], [12], [14], [21], [24], [27], [32], [37], [40], [44]]
[23, 21, 21, 24, 24, 20, 20, 23, 24, 24, 20, 21, 20, 21, 22, 24, 21, 20, 22, 24, 24, 24, 22, 24, 21, 22, 24, 22, 21, 21, 24, 23, 23, 21, 23, 24, 23, 20, 23, 23, 20, 20, 24, 24, 21, 22, 24, 21, 23, 24]
[[1, 2], [5, 6], [10], [12], [17], [22], [24], [28, 29], [33], [37], [40, 41], [44], [47]]
本文分享自 Python可视化编程机器学习OpenCV 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!