python - 有没有一种方法或函数来勾勒二进制矩阵中的形状?
问题描述
可以说我有以下矩阵:
[[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
无论出于何种原因,它运行但不正确,我不知道为什么。
解决方案
也许这个?
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")
推荐阅读
- c++ - 如何计算以下函数的时间复杂度?
- json - 带有 Angular 的 Liferay portlet,从其他 portlet 中提取配置
- reactjs - 拉放大后端删除 src 中的反应文件
- angular - 关闭所有单元测试的 ng-bootstrap 动画
- multithreading - 将线程的迭代器收集到向量中启动线程
- java - 春季启动 RequestBody 为空
- .net - 带有应用程序参数的 dotnet 发布
- python - 如何在 python 中编排你自己的模块
- javascript - 为什么重新分配工作而不是仅仅返回 concat?
- javascript - 使用 PHP 和 JS 显示保存在 MYSQL 中的事件