2016-04-10 24 views
-2

Ich versuche ein numpy Array in eine Datei zu schreiben. Aber es funktioniert nicht. Mein Problem folgt.Eine numpige Matrix in eine Datei schreiben

Ich versuche, die RGB-Pixelwerte eines Bildes unter Verwendung matplotlib.image zu erhalten und die Werte, die von meinem Programm erhalten werden, in einer Datei für zukünftige Verwendung zu speichern.

Die Werte werden in Form eines Arrays zurückgegeben, das ich versuchte, eine Textdatei mit dem folgenden Code zu schreiben. Aber die Datei wird nicht geöffnet. Es wird auch keine Fehlermeldung angezeigt.

import matplotlib.pyplot as plt 
import matplotlib.image as mpimg 
import numpy as np 

img=mpimg.imread('kitten5.jpeg') 
print(img) 

f=open('kitten.dat','w') 
f.write(img) 
f.close() 

imgplot=plt.imshow(img) 
plt.show() 

Kann jemand helfen? Es ist nicht zwingend erforderlich, dass die Daten in einer Textdatei gespeichert werden müssen. Andere Vorschläge sind gleichermaßen willkommen.

+0

Benötigen Sie tatsächlich eine formatierte TXT-Datei? Oder Sie könnten eine Binärdatei haben, die im Umgang mit Bildern normalerweise viel effizienter ist? – Alejandro

+0

Ja, eine Binärdatei wird ausreichen. Und es wird auch hilfreich sein, über eine formatierte TXT-Datei zu wissen. Aber für meinen gegenwärtigen Zweck, bitte führe mich in Binärdateien. – kanayamalakar

Antwort

2

Für das Bild in eine numpy Binärdatei zu speichern, können Sie verwenden möchten:

np.save('outputfile', img) 

Das Schöne an np.save ist, dass Sie Ihre numpy Objekte später wiederherstellen können auf mit:

np.load('outputfile.npy') 

und Sie müssen nicht über die Form, dtype, etc. kümmern

+0

Danke, es funktioniert gut. Irgendwelche Tipps zur formatierten TXT-Datei? – kanayamalakar

+1

Verwenden Sie einfach np.savetxt ('output.txt', img, fmt = '%. 3f'). Aber ich empfehle das nicht für große Bilder. Natürlich hängt der Wert von fmt von dem gewünschten Format ab. – Alejandro

+0

Aber das Hinzufügen dieser Zeile zeigt diese Nachricht: 'TypeError: Float-Argument erforderlich, nicht numpy.darray' – kanayamalakar

Verwandte Themen