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)
相关推荐
新芒10 分钟前
AI Agent进入独立站:店匠Shoplazza主Agent Athena如何重构经营?
人工智能·重构
chuan.bai3 小时前
Java RAG 实战(第 11 篇):RAG 知识工作台网页
java·开发语言·人工智能
fthux6 小时前
招聘季实测:我用 TraeWork 搭了一套 AI 简历初筛系统
人工智能·ai编程·trae
SLD_Allen6 小时前
NVIDIA KAI Scheduler深度解析——Kubernetes原生AI调度器的架构、原理与实践
人工智能·架构·kubernetes
小玮看世界6 小时前
从“画图”到“Mermaid”:AI语义理解与架构绘制的演进之路
人工智能·深度学习·计算机视觉
小岐AI观6 小时前
智赋岐黄适合养生馆吗?
大数据·人工智能·物联网
YOLO数据集集合7 小时前
煤炭物料检测数据集:基于YOLO26的矿山传送带智能“哨兵”
人工智能·yolo·数据挖掘·煤炭·煤炭检测·矿山传送带·传送带异物
深小乐7 小时前
DeepSeek Harness 强是真的强,普通用户可以再等等
人工智能