2016-03-24 4 views
0

I nicht die solution.My Bildform ist 128 * 128 * 3 finden konnte, hat es drei Kanäle, aber es verursacht auch den FehlerPython numpy Valueerror wenn I-Bilddaten zu laden und sie auf einen Array

File "E:/ML/keras_test/vgg.py", line 30, in load_data data[i,:,:,:] = arr

ValueError: could not broadcast input array from shape (128,128) into shape (128,128,3)

Mein Code unten ein:

def load_data(path): 
data = np.empty((12755,128,128,3),dtype="uint8") 
label = np.empty((12755,),dtype="uint8") 


imgs = [] 
imgs_name = [] 
for each_person in os.listdir(path): 
    temp = os.path.join(path,each_person) 
    for each_image in os.listdir(temp): 
     imgs.append(temp + "\\" + each_image) 
     imgs_name.append(each_image) 

num = len(imgs) 
for i in range(num): 
    img = Image.open(imgs[i]) 
    arr = np.asarray(img,dtype="uint8") 
    print arr.shape 
    data[i,:,:,:] = arr 
    label[i] = int(imgs_name[i].split('.')[0]) 

print 'load_data is ok!' + str(data.shape[0]) 
return data,label 

Antwort

0

Sie versuchen, die Originaldaten in ein kleines Paket zu setzen, was unmöglich ist. Ich denke, Sie versuchen, ein Bild mit RGB-Kanal in ein Graustufenbild mit einem Kanal zu übertragen. Versuchen

Bezug = (imgs.sum (Achse = 2)/3) .reshape ((12755, -1))

Die resultierenden datum ist ein 12755 x 16384 Array.

+0

aber mein Bild hat wirklich RGB channel.And wenn ich arr.shape verwenden, um es zu überprüfen.Ich bin sicher, dass jedes Bild hat drei Kanal – sky

+0

Mein Bild hat drei Kanäle, dann sollte es 16384 * 3 array.So ich creat eine Anordnung, die die Form (12755, 128, 128, ...) hat. Aber ich weiß nicht, warum es diesen Fehler haben wird? – sky

+0

Sie wollen also die 3 Kanäle behalten ... Ich habe Sie missverstanden. Versuchen Sie, die Form des Zielarrays zu erklären. – davidshen84

Verwandte Themen