#Python计算矩阵8邻域之和 Neighbors = [(1, 1), (1, -1), (1, 0), (-1, 0), (-1, 1), (-1, -1), (0, 1), (0, -1)] def get_neighbors_sum(array_of_arrays, row, col): sum_neighbors = 0 for neighbor in Neighbors: dr, dc = neighbor try: sum_neighbors += array_of_arrays[row+dr][col+dc] except IndexError: pass return sum_neighbors array_of_arrays = #"Matrix" rows = len(array_of_arrays) cols = len(array_of_arrays[0]) for row in range(rows): for col in range(cols): sum_neighbors = get_neighbors_sum(array_of_arrays, row, c
图像连通区域标记
def countRegion(img): [high,width] = np.shape(img) mask = np.zeros_like(img) mark = 0 union = {} for i in range (high): for j in range(width): if i==0 and j==0: if img[i][j]==255: mark=mark+1 mask[i][j]=mark union[mark]=mark if i==0 and j!=0: if img[i][j]==255: left = mask[i][j-1] if left!=0: mask[i][j]=left else: mark = mark +1 mask[i][j]=mark union[mark]=mark if j==0 and i!=0: if img[i][j]==255: up = mask[i-1][j] up_right = mask[i-1][j+1] if up==0 and up_right==0: mark = mark+1 mask[i][j]=mark union[mark]=mark if up==0 and up_right!=0: mask[i][j]=up_right if up_right==0 and up!=0: mask[i][j]=up if up!=0 and up_right!=0: if up==up_right: mask[i][j]=up else: mi = min(up,up_right) mask[i][j]=mi if up<up_right: union[up_right]=up else: union[up]=up_right if i!=0 and j!=0: if img[i][j]==255: up = mask[i-1][j] up_left = mask[i-1][j-1] left = mask[i][j-1] up_right = 0 if j+1<width: up_right = mask[i-1][j+1] ma = max(max(max(up,up_left),up_right),left) if ma==0: mark = mark+1 mask[i][j]=mark union[mark]=mark else: if up==up_right and up_right==up_left and up==left: mask[i][j]=up else: mi = min(min(min(up, up_left), up_right), left) if mi!=0: mask[i][j]=mi if up!=mi: union[up]=mi if up_right!=mi: union[up_right]=mi if up_left!=mi: union[up_left]=mi if left!=mi: union[left]=mi else: n_zero = [] if up!=0: n_zero.append(up) if up_left!=0: n_zero.append(up_left) if up_right!=0: n_zero.append(up_right) if left!=0: n_zero.append(left) mi1 = min(n_zero) mask[i][j]=mi1 for it in n_zero: if it!=mi1: union[it]=mi1 for i in range(high): for j in range(width): key = mask[i][j] if key!=0: while union[key]!=key: key = union[key] mask[i][j]=key return mask
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)