1
我正在阅读具有可变数量对象的列表中的图像文件。Python 2.7:将多个数组的所有元素加在一起
如何将每个文件中的数组添加到对方?
下面是一个例子只增加两个数组:
imageArray= [sum(x,y) for x,y in zip(io.imread(list[1]),io.imread(list[2]))]
我想要扩展这是能够添加可变数量的阵列。
我曾尝试以下,无果:
for x in filelist:
imageArray = [sum(y) for y in itertools.izip(io.imread(x))]
其产生错误: TypeError: Invalid dimensions for image data
任何帮助,将不胜感激!
编辑
我已经能够使用下面unutbu的部分答案的所有图像读入数组:
im = map(SNIO.imread,filelist)
从这里,我想对所有产生的阵列加在一起(元素明智)。正确的解决办法从下面的代码重现的结果:
imageArray = [x+y+z for x,y,z in zip(im[0],im[1],im[2])]
,工作正常,但正如原来的问题说,我希望与任何数量的阵列要做到这一点,而不是指定它们在之前例。
'io.imread'是'skimage.io.imread',我认为它和'scipy.ndimage.io.imread'是一样的。然而,这个解决方案并没有像预期的那样工作。 'map.SNIO.imread,files'是一个好的开始,但'np.add reduce(arrs)'不会产生我想要的结果。我将编辑这个问题来澄清。 – salamander
我相信'np.add.reduce(arrs)'应该产生你正在寻找的结果 - 只要'arrs'中的值不会导致算术溢出。还要注意,如果RGB图像每个通道具有8位,则每个通道中的值可以在0-255范围内。总结后,结果可能会轻松超过255.所以结果必须重新调整才能被视为图像 - 如果这是你正在做的事情...你可以张贴一些示例图像并解释你期望的结果吗? – unutbu
解决了它!正如你所说,我认为问题在于结果数值超过了255。谢谢! – salamander