答案 0 :(得分:4)
答案 1 :(得分:1)
您可以使用numpy和matplotlib模块使用Python制作这样一堆翻译(移位)图像。 Pillow(另一个Python模块)本身也可以这样做,但我必须查找如何确保重叠像素的值被添加,而不是被覆盖。
所以,这是一个numpy + matplotlib解决方案,它以测试图像开始:
layers = 5 # How many images should be stacked.
x_offset, y_offset = 40, 20 # Number of pixels to offset each image.
new_shape = ((layers - 1)*y_offset + img1.shape[0],
(layers - 1)*x_offset + img1.shape[1],
4) # the last number, i.e. 4, refers to the 4 different channels, being RGB + alpha
stacked = np.zeros(new_shape, dtype=np.float)
for layer in range(layers):
stacked[layer*y_offset:layer*y_offset + img1.shape[0],
layer*x_offset:layer*x_offset + img1.shape[1],
...] += img1*1./layers
plt.imsave('stacked.png', stacked, vmin=0, vmax=1)
对于接下来的人来说,本文末尾会显示一个非常简单的测试图像,这也将用于显示可用于堆叠的不同选项(覆盖或加权,加权不透明度等权重)。
+=
它真的非常简单:你预先计算输出图像的大小,将其初始化为完全透明,然后你就可以放弃"删除"该文件中的基本图像,每次偏移某个偏移矢量。部件重叠时会出现有趣的部分。然后你有一些选择:
=
运算符更改为vmin
。另外,不要按层数进行缩放。vmax
调用中指定imsave
和{{1}}来使用裁剪。此处显示的测试图像包含4个透明方块,但这些方块与左上方的2个白色方块不易区分。添加它们是为了说明透明度的增加和重新缩放的效果(白色变成灰色)。
运行上面的代码后,你最终会得到类似的东西(虽然改变你的偏移)("添加") 或者像这样("覆盖")
您可以考虑更多的方法来反映像素重叠时您想要做的事情。这里的两种情况可能是最常见的情况。无论如何,这里提出的方法应该会给你一个良好的开端。