OpenCV中图像掩码的平均值

问题描述

目前我有可变数量np.ndarray 代表相同大小的图像蒙版。数组中的值是 255 或 0。现在我希望能够获得所有这些数组的平均值。我目前有代码

mask = np.mean(masks).astype(int)
mask[mask > 169] = 255

masks 是大小为 np.ndarray(296,640) 的列表。但我收到错误

TypeError: 'numpy.int64' object does not support item assignment

解决方法

您正在取所有轴上遮罩的整体平均值,这将其减少为单个缩放器值(对象类型 int64)。您想对 axis=0 取平均值,因为您将它们包含在一个列表中,以将掩码的高度宽度保留为单个平均掩码。

mask1 = np.random.randint(0,255,(296,640))
mask2 = np.random.randint(0,640))
mask3 = np.random.randint(0,640))

masks = [mask1,mask2,mask3]

mask = np.mean(masks,axis=0).astype(int)
mask[mask > 169] = 255

mask.shape
(296,640)