首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >算法小练习题(0) 答案

算法小练习题(0) 答案

作者头像
用户6021899
发布2022-11-18 14:02:20
发布2022-11-18 14:02:20
2440
举报

上期毛毛虫问题的答案:

代码语言:javascript
复制
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]]

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python可视化编程机器学习OpenCV 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档