首页 > 解决方案 > 如何在openCV中创建和保存超过3个通道的图像

问题描述

我有一个维度为 19X30000 的二维数组,其中维度为 1X30000 的每一行代表一个信号。这些行中的每一行都将在稍后转换为它们的频谱图。我想要做的是生成一个具有 19 个通道的图像文件,其中每一层将代表初始二维数组中行的频谱图。到目前为止,我已经成功生成了 19 个频谱图,并将它们存储在一个列表中。

def makeSpec(row):
spec,freq,t,im = plt.specgram(row,Fs=100,NFFT=100,noverlap=50)
plt.axis('off')
figure = plt.gcf()
figure.set_size_inches(12, 1)

figure.canvas.draw()
img = np.array(figure.canvas.buffer_rgba())
img = cv2.cvtColor(img, cv2.COLOR_RGBA2BGRA)

b = figure.axes[0].get_window_extent()
img = np.array(figure.canvas.buffer_rgba())
img = img[int(b.y0):int(b.y1),int(b.x0):int(b.x1),:]
img = cv2.cvtColor(img, cv2.COLOR_RGBA2BGRA)

return img

    eeg = np.load('data/c2_ar/'+filename) #2d array

    images = []

    pool = mp.Pool(mp.cpu_count())

    images = pool.map(makeSpec, [row for row in eeg])

    pool.close()

如何将它们全部拼接成一个 19 通道图像(在“图像”列表中),以后可以将其用于训练需要 19 通道输入的 CNN?

标签: pythonopencvimage-processingcv2

解决方案


推荐阅读