将Numpy数组保存为图像(说明)
我在之前的帖子中找到了我的答案:将Numpy数组保存为图像。唯一的问题是,关于如何使用PyPNG模块的说明不多。
网上只有几个例子—— http://packages.python.org/pypng/ex.html#numpy http://nullege.com/codes/search/png.Writer.write
但是我该怎么处理像这样的.write错误呢:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/png.py", line 638, in write
nrows = self.write_passes(outfile, rows)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/png.py", line 783, in write_passes
extend(row)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/png.py", line 780, in <lambda>
return lambda sl: f(map(int, sl))
TypeError: argument 2 to map() must support iteration
这是我代码中的错误发生位置,PCA_tool.py(错误发生在“folder.write(outfilename, PrincipalComponent”之后):
#PrincipalComponent.save(path+'transform_'+str(each)+'.png', format='PNG')
outfilename = open(str(path)+'transformed/transform_'+str(each)+'.png', 'wb')
folder = png.Writer(m,n,greyscale=True)
folder.write(outfilename, PrincipalComponent)
outfilename.close()
sys.exit(0)
我正在尝试将一个包含8400个元素的numpy.ndarray保存为一个n=80列,m=105行的灰度png图像。
谢谢,
3 个回答
-1
最好使用scipy来处理这个问题。
from scipy.misc import imsave
# x is the array you want to save
imsave("image.png", x)
完整的文档可以在这里找到: https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.misc.imsave.html
0
import matplotlib.pyplot as plt
import numpy as np
plt.imshow(np.random.random(100, 100))
plt.savefig('')
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。
40
你可能更适合使用PIL这个库:
from PIL import Image
import numpy as np
data = np.random.random((100,100))
#Rescale to 0-255 and convert to uint8
rescaled = (255.0 / data.max() * (data - data.min())).astype(np.uint8)
im = Image.fromarray(rescaled)
im.save('test.png')