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)
相关推荐
夜阳朔1 分钟前
Conda环境激活失效问题
人工智能·后端·python
小Lu的开源日常6 分钟前
AI模型太多太乱?用 OpenRouter,一个接口全搞定!
人工智能·llm·api
mit6.8241 小时前
[Meetily后端框架] Whisper转录服务器 | 后端服务管理脚本
c++·人工智能·后端·python
Baihai IDP1 小时前
AI 系统架构的演进:LLM → RAG → AI Workflow → AI Agent
人工智能·ai·系统架构·llm·agent·rag·白海科技
沫儿笙1 小时前
弧焊机器人气体全方位节能指南
网络·人工智能·机器人
LONGZETECH1 小时前
【龙泽科技】新能源汽车维护与动力蓄电池检测仿真教学软件【吉利几何G6】
人工智能·科技·汽车·汽车仿真教学软件·汽车教学软件
jndingxin2 小时前
OpenCV 图像哈希类cv::img_hash::AverageHash
人工智能·opencv·哈希算法
ydl11282 小时前
机器学习基础知识【 激活函数、损失函数、优化器、 正则化、调度器、指标函数】
python·机器学习
Jamence3 小时前
多模态大语言模型arxiv论文略读(153)
论文阅读·人工智能·语言模型·自然语言处理·论文笔记
晨曦5432103 小时前
量子计算突破:8比特扩散模型实现指数级加速
人工智能