首页 > 解决方案 > 有没有一种方法或函数来勾勒二进制矩阵中的形状?

问题描述

可以说我有以下矩阵:

 [[0,1,0,0,0],
  [0,1,1,0,0],
  [0,1,1,1,0],
  [0,1,1,1,1]]

我想在 python 中绘制这个矩阵(基本上是三角形)中的轮廓。我想知道是否有任何功能可以为我做到这一点,或者我将如何去做。编辑:我想找出边界上的元素并绘制一条围绕这些元素的线。这是我确定元素是否在边界上的内容:

def check_border(A,i,j):
    if A[i][j] == 0:
        print("false")
        return False

    elif i == 0: #check if element is on the top border
        print("i")
        return True
    elif j == 0:#check if the element is on the left side
        print('j')
        return True
    elif i == (len(A)-1):#check if element is on the bottom border
        print('k')
        return True
    elif j == (len(A[0])-1):#check if element is on the right side
        print('p')
        return True
    elif A[i+1][j] == 0 or A[i-1][j] == 0 or A[i][j+1] == 0 or A[i][j-1] == 0: # check if the one has a neibour that is a zero
        print('q')
        return True

无论出于何种原因,它运行但不正确,我不知道为什么。

标签: pythonalgorithm

解决方案


也许这个?

from PIL import Image, ImageDraw
out = Image.new("RGB", (150, 100), (255, 255, 255))
draw = ImageDraw.Draw(out)
cell_sz = 10
a = [[0,1,0,0,0],
  [0,1,1,0,0],
  [0,1,1,1,0],
  [0,1,1,1,1]]
for y,row in enumerate(a):
    for x,v in enumerate(row):
        tl=x*cell_sz,y*cell_sz
        br=tl[0]+cell_sz,tl[1]+cell_sz
        color = [0xFFFFFF,0x0][v]
        draw.rectangle([tl,br],color)

out.save("new.jpg")

在此处输入图像描述


推荐阅读