Сохранение рассчитанных банков фильтров в изображение спектрограммы с помощью Python - PullRequest
0 голосов
/ 16 октября 2018

Я использую следующий код для вычисления частоты или коэффициентов MFCC вейвлет-сигнала.Когда я рассчитал свои сигналы (частоту во времени) в двумерных массивах, я пытаюсь сохранить их локально в .png изображениях.Я пытаюсь сделать это двумя разными способами.Во-первых, с помощью:

matplotlib.image.imsave("my_img.png", filter_banks)

Это приводит к:

enter image description here

, а второй способ с использованием инструмента librosa:

import librosa.display
from matplotlib import cm
fig = plt.figure(figsize=(..., ...), dpi=1)
librosa.display.specshow(filter_banks.T, cmap=cm.jet)
plt.tight_layout()
plt.savefig("_plot_static_conv.png")
plt.show()

и результат выглядит следующим образом:

enter image description here

Моя проблема в том, что у меня есть некоторое белое поле над изображением, которое нежелательно.Как я могу иметь такой же размер и во втором случае, чтобы избежать белого поля на изображении, которое, как мне кажется, вызвано plt.figure?

РЕДАКТИРОВАТЬ: Я пытался использоватьответ из следующего поста но это не решило мою проблему.

1 Ответ

0 голосов
/ 16 октября 2018

вероятно, в качестве обходного пути, ваше поле белого составляет 4 пикселя, можете ли вы сохранить второе изображение с еще 8 пикселями по высоте и ширине.

, а затем обрезать его, используя c2v

import cv2
img = cv2.imread("image.png")
crop_img = img[y:y+h, x:x+w]
cv2.imshow("cropped", crop_img)
cv2.waitKey(0)

как предложено в: https://stackoverflow.com/a/15589825/4610938

...