如何生成图像数组作为多个图像数组的平均值?

时间:2017-10-01 00:59:58

标签: python image numpy matplotlib scipy

我正在尝试从多个热图创建平均热图。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
from scipy import misc

f1 = misc.imread('heatmap1.png')
f2 = misc.imread('heatmap2.png')
f3 = misc.imread('heatmap3.png')
f_avg=np.average([f1,f2,f3],axis=0)
plt.imshow(f_avg)
plt.show()

这是heatmap1.png:

This is 'heatmap1'

这是平均3个热图的结果:

enter image description here

看起来这不是计算平均色彩数组的方法。

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:2)

您应该使用plt.imshow(f_avg.astype(np.uint8)),以便imshow可以检测到这是一个图像而不是任意浮点数据。我无法访问您的所有三个图像,但如果我使用f1三次或使用随机噪声图像进行测试,则此更改会使代码的行为与我期望的一样(如果没有变化)。

还要注意这些图像阵列具有RGB值和α值均得到平均值 - 这三个图像的平均值不一定与包含所有数据的热图相同(但是这是一个很好的粗略估计,如果你有权访问的话。)