我有一些用Python扫描图像并从中获取像素数据的代码。然后,它生成包含这些数据的列表。你知道吗
例如,[0,1,2,3]-像素的X位置,[0,0,0,0]-像素的Y位置,[221,0,34102]-像素的红色值,[2100,3102]-像素的绿色值,[121,25,4120]-像素的蓝色值。你知道吗
我想做的是使用这些信息,以便我可以绘制瓷砖的RGB值为基础的X和Y坐标。你知道吗
所以我的问题是:我如何按顺序读回列表中的项目,这样我就可以将一个列表中的第一个项目放入一个新列表,将列表中的第二个项目放入另一个列表,等等。。。你知道吗
期望输出:
X,Y=[0,0],[1,0]等。。。你知道吗
R,G,B=[221,2121],[0100,25]等。。你知道吗
当前代码(可能不相关):
import pygame, sys, os, math, time, pygame.surfarray
## SCREEN ##
pygame.init()
w,h = 800,600; cx,cy = w//2, h//2;
os.environ['SDL_VIDEO_CENTERED'] = '1'
pygame.display.set_caption('Test')
screen = pygame.display.set_mode((w,h),0)
mapsurface = pygame.display.set_mode((w,h),1)
## IMPORT MAPS ##
map_1 = pygame.image.load("assets/maps/map1.png")
## Creates a new 'screen' for map to display (under game screen / invisible) ##
mapsurface.blit(map_1,(0,0))
class MapArray:
map_array = pygame.surfarray.array3d(mapsurface)
map_array_X = 0
map_array_Y = 0
map_array_output_colour_RED = [0]
map_array_output_colour_GREEN = [0]
map_array_output_colour_BLUE = [0]
map_array_output_X = [0]
map_array_output_Y = [0]
DrawTiles = 0
PRINT = 0
def __init__(self,pos=(0,0)):
self.pos = list(pos)
def update(self,dt,key):
colourRED_array = self.map_array[self.map_array_X,self.map_array_Y,0]
colourGREEN_array = self.map_array[self.map_array_X,self.map_array_Y,1]
colourBLUE_array = self.map_array[self.map_array_X,self.map_array_Y,2]
## MAP ARRAY SCAN - Gives X/Y coords and RGB value for each pixel in MAP ##
if self.map_array_X <= 64 and colourBLUE_array < 255:
self.map_array_X +=1
self.map_array_output_colour_RED.append(colourRED_array)
self.map_array_output_colour_GREEN.append(colourGREEN_array)
self.map_array_output_colour_BLUE.append(colourBLUE_array)
self.map_array_output_X.append(self.map_array_X)
self.map_array_output_Y.append(self.map_array_Y)
if self.map_array_X == 64 and colourBLUE_array < 255:
self.map_array_Y+=1
self.map_array_X = 0
if colourBLUE_array < 255:
print (self.map_array_output_X, self.map_array_output_Y, self.map_array_output_colour_RED, self.map_array_output_colour_GREEN, self.map_array_output_colour_BLUE)
print ("")
elif self.PRINT == 0: print ("Map Scan Finished!"); print ("");print ("Format: [Xpos_List] [Ypos_List] [colourRED_array] [colourGREEN_array] [colourBLUE_array]"); self.PRINT = 1; self.DrawTiles = 1;
if key[pygame.K_ESCAPE]: pygame.quit(); sys.exit() #Quits Game#
clock = pygame.time.Clock()
Map_Array = MapArray((0,0))
while True:
dt = clock.tick(60)
## BACKGROUND ##
screen.fill((100,100,100))
for event in pygame.event.get():
if event.type == pygame.QUIT: pygame.quit();sys.exit()
pygame.display.update()
key = pygame.key.get_pressed()
Map_Array.update(dt, key)
这几乎就是
zip
存在的原因。你知道吗如果您有:
你可以做:
这将给你:
相关问题 更多 >
编程相关推荐