我使用pyplot来获取图像。看起来默认的是彩色图像,但我想要的是灰度。我使用下面的代码,但是,我需要首先保存彩色图像,然后才能获得灰度图像。有没有办法直接显示和保存灰度图像?
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
#downsampling
a = sound
R = 2
a=a.reshape(-1,R).mean(axis=1)
Pxx, freqs, bins, im = plt.specgram(a, NFFT=1024, Fs=44100/2,
noverlap=900) #Fs be downsampling
plt.savefig('sp_xyz.png')
image = Image.open('sp_xyz.png').convert("L")
arr = np.asarray(image)
plt.imshow(arr, cmap='gray_r')发布于 2017-08-11 16:43:07
问题How can I convert an RGB image into grayscale in Python?展示了如何将numpy数组转换为灰度的不同方法,可以通过直接操作数组,也可以通过PIL。
然而,在这里的问题中,您不需要转换任何内容,因为已读取的光谱图是具有单通道的数组(因此是灰度图像)。
现在这取决于你想要做什么。如果希望将结果数组(Pxx)保存为图像,可以使用
plt.imsave('sp_xyz.png', Pxx, cmap="gray")如果您想要保存绘制为轴但带有灰色色彩映射的光谱图,
Pxx, freqs, bins, im = plt.specgram(x, NFFT=NFFT, Fs=Fs, noverlap=900, cmap="gray")
plt.savefig('sp_xyz.png')https://stackoverflow.com/questions/45624683
复制相似问题