python - 如何从二维阵列中获得完美的灰度图像?
问题描述
给定一个迷宫作为输入,我编写了一个代码来查找最短路径。但是,输出图像路径是不连续的。这是什么原因?
'''
import numpy as np
from PIL import Image
import cv2
import matplotlib.pyplot as plt
import sys
sys.setrecursionlimit(150000)
def closest_path(map,pos,fin):
stack0=np.zeros([50,2],dtype=np.int32)
step=0
stack0[0]=[pos[0],pos[1]]
while mem[fin[0],fin[1]]==1000000:
stack1=np.zeros([50,2],dtype=np.int32)
ar=0
for k in stack0:
if k[0]<len(map)-1 and map[k[0]+1,k[1]]>100 and mem[k[0]+1,k[1]]==1000000:
stack1[ar]=[k[0]+1,k[1]]
ar+=1
mem[k[0]+1,k[1]]=step+1
if k[1]<len(map[0])-1 and map[k[0],k[1]+1]>100 and mem[k[0],k[1]+1]==1000000:
stack1[ar]=[k[0],k[1]+1]
ar+=1
mem[k[0],k[1]+1]=step+1
if k[0]>0 and map[k[0]-1,k[1]]>100 and mem[k[0]-1,k[1]]==1000000:
stack1[ar]=[k[0]-1,k[1]]
ar+=1
mem[k[0]-1,k[1]]=step+1
if k[1]>0 and map[k[0],k[1]-1]>100 and mem[k[0],k[1]-1]==1000000:
stack1[ar]=[k[0],k[1]-1]
ar+=1
mem[k[0],k[1]-1]=step+1
step+=1
stack0=stack1
def retract(mem,pos0,pos1):
if mem[pos0,pos1]==0:
return mem
else:
if pos0<len(map)-1 and mem[pos0,pos1]-mem[pos0+1,pos1]==1:
path[pos0+1,pos1]=255
retract(mem,pos0+1,pos1)
elif pos1<len(map[0])-1 and mem[pos0,pos1]-mem[pos0,pos1+1]==1:
path[pos0,pos1+1]=255
retract(mem,pos0,pos1+1)
elif pos0>0 and mem[pos0][pos1]-mem[pos0-1][pos1]==1:
path[pos0-1,pos1]=255
retract(mem,pos0-1,pos1)
elif pos1>0 and mem[pos0][pos1]-mem[pos0][pos1-1]==1:
path[pos0,pos1-1]=255
retract(mem,pos0,pos1-1)
map=cv2.imread('mazza.png',0)
mem = np.zeros([365,366],dtype=np.int32)
pos=[10,10]
fin=[15,340]
path = np.zeros([365,366],dtype=np.int32)
for i in range (0,365):
for j in range (0,366):
mem[i,j]=1000000
if map[i][j]<150:
path[i,j]=0
else:
path[i,j]=100
closest_path(map,pos,fin)
if mem[fin[0],fin[1]]!=1000000:
print(mem[fin[0],fin[1]])
retract(mem,fin[0],fin[1])
ime = Image.fromarray(path)
plt.imshow(ime)
else:
print("cannot be reached")
'''
解决方案
推荐阅读
- angular - 拖动时如何保持行的大小?
- tensorflow - 在 Google Colab 中获取 AttributeError
- android - 如何做通过http协议连接的按钮?
- python - 一种计算另一个元素之间的元素数量并返回数组的方法
- regex - REGEXEXTRACT:value,text函数有必要吗?
- javascript - 我如何使用 Javascript 下载我编辑过的 DOM 的 HTML 文件,并在下载的文件中保留我所做的更改?
- php - 为什么 fgetcsv() 有时显然将“文件结尾”视为错误?
- javascript - 反应功能组件类型错误:无法读取未定义的属性“道具”
- flutter - 从不同的类访问时,HashedMap 数据丢失 - Flutter
- symfony - 使用 EmbedMany 作为表单的文档 (Symfony 3)