Image processing Python图像库覆盖1000幅图像

Image processing Python图像库覆盖1000幅图像,image-processing,overlay,python-imaging-library,Image Processing,Overlay,Python Imaging Library,我需要创建一个1000幅图像的叠加/合成图,所有图像的大小都相同。它们都将具有相同的透明度级别,这样,在1000幅图像中的任何一幅图像中没有图像的任何像素都将是白色的,而在1000幅图像中的每幅图像中都有图像的像素在1000幅图像的最终叠加中将是黑色的 我是这个领域的新手,一直在努力找出最好的方法。我意识到可以使用混合或粘贴(此时不确定它们之间的差异),但它们只使用两个图像作为参数。如何叠加所有1000个图像?实际上,我决定使用matplotlib和numpy制作热图,而不是创建叠加图像。您必须

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


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

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

您必须循环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()
将numpy导入为np
从PIL导入图像
img_list='图像名称列表'
i=0
背景=图像。新建(img\u列表[1]。模式,img\u列表[1]。大小)
当i
您能提供3-4张样本图像吗?因此每张图像的每个像素要么是1/1000白色,要么是1/1000黑色。所以最好是16位图像。@MarkSetchell:不,它将是所有像素总和的1/1000。否则,所有白色中的单个黑色像素将不可见,但4个黑色将该像素设置为4/1000~1,或亮度为254。您需要一个与图像大小一样大的数组,但(假定输入值为字节)具有更大的存储空间。添加每个新的图像到这个;完成后,将每个值除以图像数。@Jongware它现在是不相关的,但我实际上是指每个输入图像像素贡献1/1000白色或1/1000黑色,因此实际上我们的意思是相同的。