【问题标题】:Python imaging library overlay of 1000 images1000张图像的Python成像库叠加
【发布时间】:2015-07-12 00:07:35
【问题描述】:

我需要创建 1000 张图像的叠加/合成,所有图像的大小都相同。它们都将具有相同级别的透明度,因此在 1000 幅图像中没有图像的任何像素将是白色的,而在 1000 幅图像中的每幅图像中都有图像的像素在 1000 的最终叠加中将是黑色。

我是该领域的新手,一直在尝试找出最好的方法。我意识到可以使用混合或粘贴(此时不确定它们之间的差异),但它们仅采用 2 张图像作为参数。我如何叠加所有 1000 个?

【问题讨论】:

  • 能否提供3-4张样张图片?
  • 所以每张图像的每个像素要么是白色的 1/1000,要么是黑色的 1/1000。所以最好是 16 位图像。
  • @MarkSetchell:不,它将是所有像素总和的 1/1000。否则全白中的单个黑色像素将不可见,但 4 个黑色会将像素设置为 4/1000 ~ 1,或亮度为 254。
  • 您需要一个与图像大小一样大的数组,但(假设输入值是字节)具有更大的存储空间。将每个新图像添加到此;完成后,将每个值除以图像数。
  • @Jongware 现在无关紧要,但我的意思是 每个输入图像 像素贡献 1/1000 白色或 1/1000 黑色,所以我们的意思是相同的。

标签: image-processing overlay python-imaging-library


【解决方案1】:

实际上我决定使用 matplotlib 和 numpy 制作热图,而不是创建叠加图像。

【讨论】:

    【解决方案2】:

    你必须循环 1000 张图像,将它们保存在一个辅助数组中并将它们绘制在同一个图中,代码将是这样的:

    import numpy as np
    import matplolib.pyplot as plt
    from PIL import Image
    
    img_list = 'list of name of your images '
    fig= plt.figure(1)
    
    for i in img_list:
       aux=Image.open(i)
       aux=np.array(aux)
       plt.imshow(aux)
       plt.show()
    plt.imsave('name.png')
    

    如果它不起作用,请尝试相同的脚本,但每次都使用新图像和覆盖的图像作为参数来粘贴,如下所示:

    import numpy as np
    from PIL import Image
    
    img_list = 'list of names of your images '
    
    i=0
    
    background = Image.new(img_list[1].mode ,img_list[1].size)
    
    while i < len(img_list):
       aux = Image.open(img_list[i])
       background = background.paste(aux,(0,0),aux)
       i=i+1
    background.show()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      • 1970-01-01
      • 2021-08-10
      相关资源
      最近更新 更多