7.2 二维数组找数组最边上的不为0的坐标

如下图的二维数组,要获得所有的最外围的值不为0的坐标。

其代码如下:

python 复制代码
import cv2
import numpy as np


#2.找矩阵save_list边界的位置
 #输入为save_list,输出为剩下边界坐标的save_list
def boundary(s):

    print(s)
    list1={}#按照横坐标从小到大的顺序的坐标位置
    list2=[]
    for i in range(len(s)):
        list1[str(i)]=[]
        for j in range(len(s[0])):
            if s[i][j]!=0:
                list1[str(i)].append((i,j))
                list2.append((i,j))

    list2=sorted(list2,key=lambda x:x[1])
    list_over={}#按照纵坐标从小到大的顺序的坐标位置
    for item in list2:
        if str(item[1]) not in list_over:
            list_over[str(item[1])]=[]
            list_over[str(item[1])].append(item)
        else:
            list_over[str(item[1])].append(item)

    print(list1)
    print(list_over)

    #以上代码获得了两个字典
    #下面获得该矩阵最外围的坐标
    save_list=[]
    for item in list1:
        #print(item)
        if len(list1[item])==1:
            save_list.append(list1[item][0])
        else:
            save_list.append(list1[item][0])
            save_list.append(list1[item][-1])

    for item in list_over:
        if list_over[item][-1] not in save_list:
            save_list.append(list_over[item][-1])

    save_list=sorted(save_list)

    return save_list

if __name__ == '__main__':

    data1 = [
        [0, 0, 0, 1, 0, 0, 0],
        [0, 1, 1, 1, 1, 1, 0],
        [0, 1, 1, 1, 1, 1, 0],
        [1, 1, 1, 1, 1, 1, 1],
        [0, 1, 1, 1, 1, 1, 0],
        [0, 1, 1, 1, 1, 1, 0],
        [0, 0, 0, 1, 0, 0, 0]
    ]
    save_list=boundary(data1)
    print(save_list)
相关推荐
LS_learner13 分钟前
OpenCode的Agent skill创建方式
人工智能
云布道师14 分钟前
OSS 向量 Bucket 最佳实践:快速构建多模态图片语义检索
人工智能
独断万古他化15 分钟前
软件测试新纪元:为什么选择AI测试
人工智能·ai·测试
张张123y15 分钟前
AI Agent Memory:从理论到实战,掌握长短期记忆的核心技术【1】
大数据·人工智能·transformer
这张生成的图像能检测吗16 分钟前
(论文速读)SFAFBR:一种自监督的人工特征偏置校正框架
人工智能·深度学习·神经网络·机器学习·故障诊断·自监督学习
大傻^17 分钟前
LangChain4j Spring Boot Starter:自动配置与声明式 Bean 管理
java·人工智能·spring boot·spring·langchain4j
披着羊皮不是狼21 分钟前
AI计算系统实战:从算子实现到GPU性能调优
人工智能
大师影视解说26 分钟前
2026 短剧出海:百亿市场洗牌,自动化翻译与工程本地化
人工智能·视频技术·短剧出海·短剧行业趋势·短剧翻译·视频翻译技术·行业观察
大傻^26 分钟前
Spring AI 2.0 MCP 协议实战:Model Context Protocol SDK 与多服务器编排
服务器·人工智能·spring
哈哈很哈哈26 分钟前
深度学习中的分布式并行策略和内存优化技术
人工智能·语言模型