首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何直接将图像从彩色转换为灰度,而无需使用pyplot进行存储和读取

如何直接将图像从彩色转换为灰度,而无需使用pyplot进行存储和读取
EN

Stack Overflow用户
提问于 2017-08-11 07:05:07
回答 1查看 1.2K关注 0票数 0

我使用pyplot来获取图像。看起来默认的是彩色图像,但我想要的是灰度。我使用下面的代码,但是,我需要首先保存彩色图像,然后才能获得灰度图像。有没有办法直接显示和保存灰度图像?

代码语言:javascript
复制
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')
EN

回答 1

Stack Overflow用户

发布于 2017-08-11 16:43:07

问题How can I convert an RGB image into grayscale in Python?展示了如何将numpy数组转换为灰度的不同方法,可以通过直接操作数组,也可以通过PIL。

然而,在这里的问题中,您不需要转换任何内容,因为已读取的光谱图是具有单通道的数组(因此是灰度图像)。

现在这取决于你想要做什么。如果希望将结果数组(Pxx)保存为图像,可以使用

代码语言:javascript
复制
plt.imsave('sp_xyz.png', Pxx, cmap="gray")

如果您想要保存绘制为轴但带有灰色色彩映射的光谱图,

代码语言:javascript
复制
Pxx, freqs, bins, im = plt.specgram(x, NFFT=NFFT, Fs=Fs, noverlap=900, cmap="gray")
plt.savefig('sp_xyz.png')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45624683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档