【问题标题】:Merging three numpy arrays as jpeg image in python在python中将三个numpy数组合并为jpeg图像
【发布时间】:2014-11-14 07:09:56
【问题描述】:

我已将 jpeg 图像拆分为 r、g、b 并将它们转换为 numpy 数组。然后我改变了 r,g,b 的像素值。现在我想将这三个合并为一个 jpeg 并保存。我的原始图像是 1024 * 500 图像。如果有人能给我一个想法,那将是一个很大的帮助

im =Image.open("new_image.jpg")
r,g,b=im.split()

r=np.array(r)
g=np.array(g)
b=np.array(b)

然后我更改了像素的值。我想合并得到的 r,g,b。提前致谢

【问题讨论】:

    标签: python numpy jpeg python-imaging-library


    【解决方案1】:

    将 PIL 图像转换为 NumPy 数组:

    img = Image.open(FILENAME).convert('RGB')
    arr = np.array(img)
    r, g, b = arr[:,:,0], arr[:,:,1], arr[:,:,2]
    ...
    

    要将 dtype uint8 的 r、g、b(二维)NumPy 数组转换为 PIL 图像:

    arr = np.dstack([r, g, b])
    img = Image.fromarray(arr, 'RGB')
    

    这是因为Image.fromarray 可以从任何支持NumPy array interface 的对象创建PIL 图像。

    【讨论】:

      【解决方案2】:

      基于这个document(最后是第4页),您可以通过合并来做到这一点:

      r, g, b = im.split()
      im = Image.merge("RGB", (b, g, r))
      

      【讨论】:

      • 感谢您的回复。我已经试过了。但它不起作用。
      猜你喜欢
      • 2012-05-13
      • 1970-01-01
      • 2017-04-15
      • 2014-05-15
      • 2020-10-16
      • 2018-08-27
      • 1970-01-01
      • 2022-08-05
      相关资源
      最近更新 更多