2017-08-25 1 views
1

Ich verwende. H5-Datei, um viele Bilddaten zu speichern. Ändern Sie dann das Bild und speichern Sie es darin.Laden von Bilddaten aus. H5-Datei mit ungewöhnlichen Farben in Python 3.5 und h5py

Erstellen von Daten-Set für Bild: t1=hdf5_file.create_dataset("train_img", train_shape, np.int8)

Schleife über Bildadresse sie, um die Größe und speichert:

for i in range(len(train_addrs)): 
    addr = train_addrs[i] 
    img = cv2.imread(addr) 
    img = cv2.resize(img, (128, 128), interpolation=cv2.INTER_CUBIC) 
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) 
#save 
    hdf5_file["train_img"][i, ...] = img[None] 

hdf5_file.close() 

Wenn ich versuche, um zu überprüfen, wie das Bild mit dem folgenden Code aussieht:

hdf5_path = 'dataset.hdf5' 
train_dataset = h5py.File(hdf5_path, "r") 
train_set_x_orig = np.array(train_dataset["train_img"][:]) 
plt.imshow(train_set_x_orig[5]) #see 5th image 
plt.show() 

Ich bekomme dieses ungewöhnliche Bild. Die erste aus der .h5-Datei, die untere ist das Originalbild. Ich habe die Form von allem überprüft, es geht ihnen gut. resize Code in cv2 ist auch in Ordnung. Jede Art von Hilfe wird geschätzt.

After loading image from .h5 file

Original image

+0

Was die dtype (n) ist? 'img' vor dem Speichern der Anzeigen ok? Ist das '[i, ...]' innerhalb oder außerhalb der 'i' Schleife gespeichert? – hpaulj

+0

Es scheint, .h5-Datei verwendet standardmäßig 7-Bit-Darstellung. –

+0

Der in 'create_datset' verwendete Typ ist' np.int8'. Ich habe den 'resize' Teil einzeln überprüft. Dieser Teil ist in Ordnung. '[i, ...]' innerhalb der 'i'-Schleife. änderte das. Irgendeine Idee, wie man es richtig macht? @hpaulj – sayem48

Antwort

1

ich einen b Laden/w png mit scipy.misc

In [1354]: arr2 = misc.imread('../Desktop/newworld2.png') 
In [1355]: arr2.shape 
Out[1355]: (500, 778, 3) 
In [1356]: arr2.dtype 
Out[1356]: dtype('uint8') 

es mit

In [1343]: d2 =f.create_dataset('newworld set',shape=(2, *arr2.shape), dtype=np.uint8) 
In [1344]: d2[0]=arr2 
In [1345]: d2[1]=arr2 

Speichern bewahrt die ursprüngliche

Einsparung als int8 die Art der Farbänderung erzeugt, die Sie

In [1348]: d3 =f.create_dataset('newworldbad',shape=(2, *arr2.shape), dtype=np.int8) 
In [1349]: d3[0]=arr2 
In [1350]: d3[0] 

weißen Pixel zeigen, [255, 255, 255] geändert [127, 127, 127] bis grau usw.

+0

Ja, genau das ist passiert! – sayem48

Verwandte Themen