2017-04-24 215 views
0

我有129756 RGB图像(100X187),我想要转换为(m,n)数组。拼合RGB图像阵列

我用这个代码:

for i in range(len(imlist)): 
img =np.array(Image.open('/home/fatmasaid/new_flicker_data_resized_color'+'//'+imlist[i])) 
immatrix =np.array(img.flatten()) 
print (immatrix.shape) 

我(56100)

但是,我需要与这些维数组:(129756,56100)

我怎样才能做到这一点?

我也试过这个代码:

immatrix = np.empty((len(imlist),3, 187, 100), dtype="float32") 
l=len(imlist) 

for i in range(l): 
    img = Image.open(path2 + '/'+ imlist[i]) 
    width, height=img.size 


    r=np.zeros((187,100),dtype=float) 
    g=np.zeros((187,100),dtype=float) 
    b=np.zeros((187,100),dtype=float) 

    for y in range(height-1): 
     for x in range(width-1): 
      rgb = img.getpixel((x,y)) 

      rgb=(rgb[0],rgb[1],rgb[2],); 

      r[y][x]=rgb[0] 
      g[y][x]=rgb[1] 
      b[y][x]=rgb[2] 

    AImg=[r,g,b] 

    arr = np.asarray(AImg, dtype="float32") 
    immatrix[i, :, :, :] = arr 

    if i % 5000 == 0: 
     print (i) 
print (immatrix.shape) 

,但我得到这个错误:

指数100是出界对轴0,大小100

+0

我假设你知道这是将需要的RAM 28GB? – Alnitak

回答

0
batch_array = np.empty([0]) 
for i in range(len(imlist)): 
    img = np.array(Image.open('/home/fatmasaid/new_flicker_data_resized_color'+'//'+imlist[i])) 
    immatrix =np.array(img.flatten()) 
    batch_array = np.append(batch_array, immatrix) 
print (immatrix.shape) 

你可以尝试将immatrix附加到另一个数组。目前,您在循环

的每一次迭代刷新immatrix另一种方法是:

batch_array = np.empty([0]) 
for i in range(len(imlist)): 
    img = np.array(Image.open('/home/fatmasaid/new_flicker_data_resized_color'+'//'+imlist[i])) 

    batch_array = np.append(batch_array, img) 

batch_array = batch_array.flatten() 

batch_array = np.reshape(batch_array, (len(imlist), len(batch_array)/len(imlist))) 
print (immatrix.shape)