为什么图像存储与不显示的图像不同?
我目前无法理解为什么我不能够重新情节我存储数据后..为什么图像存储与不显示的图像不同?
import os
import sys
from os import listdir
from os.path import isfile, join
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import seaborn as sb
from matplotlib.colors import Normalize
import matplotlib
from matplotlib import cm
from PIL import Image
import librosa
import librosa.display
import ast
def make_plot_store_data(name,interweaved):
librosa.display.specshow(interweaved.T,sr=16000,x_axis='frames',y_axis='mel',hop_length=160,cmap=cm.jet)
plt.title("log mel power spectrum of interweaved " + name)
plt.colorbar(format='%+02.0f dB')
plt.savefig(plot+"/"+name+"_plot_interweaved_conv.png")
plt.show()
plt.close()
convert = plt.get_cmap(cm.jet)
numpy_output_interweawed = convert(interweaved.T)
print interweaved.shape
print numpy_output_interweawed.shape
plt.imshow(numpy_output_interweawed, interpolation='nearest')
plt.show()
raw_input("Somethign")
numpy_output_interweawed.dump(numpy_train+name+"_normalized_interweaved"+".dat")
numpy_output_interweawed_or = convert(interweaved.T)*255
numpy_output_interweawed_or.dump(numpy_train+name+"_interweaved"+".dat")
情节表明通过librosa
视图中的数据作为
但是,当我转换原始数据使用plt.cmap(cm.jet)
和它使用matplotlib.pyplot
图的东西弄乱了数据,并且看起来不像原始的任何方式..
编辑
这是
plt.imshow(interweaved.T,aspect = 'auto')
plt.show()
raw_input("Somethign")
它看起来像的图像事情长宽比 - 它开始像原来的情节,当我使情节更大 - 但为什么颜色太暗...
没有错,一切似乎按预期工作,据我所知,没有数据或知道阵列形状。
不过,如果你希望你的imshow
情节类似于由librosa产生的一个,你可能首先考虑使用一种不平等方面
plt.imshow(..., aspect="auto")
,并可能设置的情节数据范围正确使用imshow的参数extent
。
另外要注意,通过librosa产生的情节是pcolormesh
,所以要忠实地复制它,你可能要保持你的数据在它(不把它通过颜色表)的格式和使用pcolormesh
来绘制。
数组形状交织的是(x,40)。当它被cmap转换时它是(40,x,4) - 这也是我所期望的。但情节看起来如此不同。当'cmap'应该创建一个带有RGB值的数据数组时,为什么我需要'pcolormesh'。数据必须包含图像的RGB值,因为稍后我将它们存储以供进一步处理。 –
你知道电网出现的原因吗? –
与此相同的问题:http://stackoverflow.com/questions/43647366/store-a-numpy-ndarray-as-an-image-and-then-save-the-pixel-values – ImportanceOfBeingErnest