Перевести в оттенки серого

ms = np.frombuffer(wav.readframes(nframes), dtype={1: np.int8, 2: np.int16, 4: np.int32}[sampwidth])[0::int(nframes/w*4)]   
plt.plot(ms)
im = BytesIO()
plt.savefig(im, format="png", dpi=DPI)
im.seek(0)

Затем считываю

img_rgb = cv2.imdecode(np.frombuffer(im.getvalue(), np.uint8), cv2.IMREAD_UNCHANGED)

Перевожу в оттенки серого

img_ser = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY) 

Возможно ли в данном коде пр сохранении либо еще как

ms = np.frombuffer(wav.readframes(nframes), dtype={1: np.int8, 2: np.int16, 4: np.int32}[sampwidth])[0::int(nframes/w*4)]   
plt.plot(ms)
im = BytesIO()
plt.savefig(im, format="png", dpi=DPI)
im.seek(0)

Сразу сгенерировать данные в оттенках серого? Чтобы в дальнейшем не переводить лишний раз??


Ответы (1 шт):

Автор решения: strawdog

Вы можете сразу выбрать цветовую карту для отображаемых графиков. например, так:

import matplotlib.pyplot as plt
import numpy as np
from cycler import cycler

X = [[1,2,3,4,5,6],[2,2,2,2,2,2]]
Y = [[5,2,1,3,5,4],[3,4,6,1,1,5]]
color = plt.cm.gray(np.linspace(0.1, 1, len(X[0]))) # третий аргумент - количество графиков
plt.rcParams["axes.prop_cycle"]=cycler(color=color)
plt.plot(X, Y)
plt.show()

получится что-то такое:

введите сюда описание изображения

→ Ссылка