【问题标题】:saving multiple 3D array of size (22,6,2840) as images将多个大小为 (22,6,2840) 的 3D 数组保存为图像
【发布时间】:2020-09-01 17:00:26
【问题描述】:

我正在生成多个大小为 (22,6,2840) 的 3D numpy 数组,每个数组包含 22 个大小为 (6,2840) 的数组。现在我想将此数组 (22,6,2840) 保存为图像。我不知道我能不能做到。我尝试使用plt.savefig 执行此操作,但没有成功。我正在尝试超过 2 周来寻找我能做到的事情。 任何帮助将不胜感激。

    signals=np.zeros((22,6,2840))
    t=0
    movement=int(S*256)
    if(S==0):
        movement=_SIZE_WINDOW_SPECTOGRAM        
    while data.shape[1]-(t*movement+_SIZE_WINDOW_SPECTOGRAM) > 0:
        for i in range(0, 22):
            start = t*movement
            stop = start+_SIZE_WINDOW_SPECTOGRAM
            signals[i,:]=wavelet(data[i,start:stop])
        if(signalsBlock is None):
            signalsBlock=np.array([signals])
        else:
            signalsBlock=np.append(signalsBlock, [signals], axis=0)
        nSpectogram=nSpectogram+1
        if(signalsBlock.shape[0]==50):
            saveSignalsOnDisk(signalsBlock, nSpectogram)
            signalsBlock=None
              
        t = t+1

【问题讨论】:

  • 推荐PIL,谢谢
  • plt.savefig用于保存matplotlib生成的图形,不用于将数组数据保存为图像格式。
  • @ted930511 如何使用 PIL 将 (22,6,2840) 转换为图像??

标签: python numpy python-imaging-library


【解决方案1】:

尝试使用PyPNG 库。您必须将数组重塑为二维格式,然后将其写为 png。图书馆的链接是here

    image_2d = numpy.reshape(image_3d, (-1, column_count * plane_count))
    pngWriter.write(out, image_2d)

此外,here 还提供了另一种使用 PIL Image 的方法。但是,这主要适用于 RGB 样式的 3 通道图像。

【讨论】:

  • 是他们的另一个保存 N 个大小为 (6,2840) 的二维数组,而不是重塑数组。我想将 3D 数组保存为多个图像
  • @nadamedhat,我建议查看post。如果这没有帮助,并且我对您的问题的理解有误,请通知我
  • 这对我没有帮助。我有多个从小波函数返回的二维数组,我想将这些二维数组垂直连接为图像。
猜你喜欢
  • 1970-01-01
  • 2020-06-04
  • 2016-07-25
  • 1970-01-01
  • 2010-10-28
  • 2012-10-16
  • 1970-01-01
相关资源
最近更新 更多