2016-04-10 28 views
-2

Bir dosyaya numpy dizisi yazmaya çalışıyorum. Ama işe yaramıyor. Benim problemim takip ediyor.Bir dosyaya numpy matrisi yazma

matplotlib.image kullanarak bir resmin RGB piksel değerlerini alıyorum ve programımdan elde edilen değerleri ileride kullanmak üzere bir dosyaya kaydediyorum.

Değerler, aşağıdaki kodu kullanarak bir metin dosyasına yazmaya çalıştığım bir dizi biçiminde döndürülür. Ancak dosya açılmıyor. Bir hata mesajı da vermiyor.

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() 

Birisi yardımcı olabilir mi? Verilerin tek başına bir metin dosyasına kaydedilmesi zorunlu değildir. Diğer öneriler eşit olarak karşılanır.

+0

Gerçekten bir txt dosyasına ihtiyacınız var mı? Ya da genellikle görüntülerle uğraşırken çok daha verimli bir ikili dosyaya sahip olabilirsiniz? – Alejandro

+0

Evet, bir ikili dosya yapacaktır. Ayrıca biçimlendirilmiş bir txt dosyası hakkında bilmek de yararlı olacaktır. Ama şu anki amacım için lütfen bana ikili dosyalarda yol göster. – kanayamalakar

cevap

2

bir numpy ikili dosyasına görüntü kaydetme için kullanmak isteyebilirsiniz:

np.load('outputfile.npy') 
:

np.save('outputfile', img) 

np.save ilgili güzel bir şey ile daha sonra da numpy nesneleri kurtarabilirsiniz olmasıdır

ve şekil, dtype vb. Ile ilgilenmenize gerek yoktur.

+0

Teşekkür ederim, iyi çalışıyor. Biçimlendirilmiş txt dosyasıyla ilgili ipuçları var mı? – kanayamalakar

+1

Sadece np.savetxt ('output.txt', img, fmt = '%. 3f') kullanın. Ama bunu büyük görüntüler için önermiyorum. Elbette, fmt'nin değeri istenen formata bağlı olacaktır. – Alejandro

+0

Ancak bu satırı ekleyerek şu mesajı gösterir: 'TypeError: float argümanı gerekli, numpy.ndarray' değil, – kanayamalakar