【问题标题】:Average of image masks in OpenCVOpenCV 中图像掩码的平均值
【发布时间】:2021-05-20 01:20:48
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: numpy opencv mean numpy-ndarray


    【解决方案1】:

    您正在获取所有轴上掩码的总体平均值,这会将其缩减为单个缩放器值(对象类型int64)。您希望对 axis=0 取平均值,因为您将它们包含在一个列表中,以便将掩码的 HeightWidth 保留到单个平均掩码中。

    mask1 = np.random.randint(0,255,(296, 640))
    mask2 = np.random.randint(0,255,(296, 640))
    mask3 = np.random.randint(0,255,(296, 640))
    
    masks = [mask1, mask2, mask3]
    
    mask = np.mean(masks, axis=0).astype(int)
    mask[mask > 169] = 255
    
    mask.shape
    
    (296, 640)
    

    【讨论】:

    • 我这样做了,但我得到了不兼容的形状 - 事实上看看这个:mask.shape, masks[0].shape = (2, 296) (296, 640),它与您在上面所做的np.randint 不同
    • 原来masks的形状是什么? masks.shape
    • 应该是 (296, 640)
    • 我很困惑,你有 296 个 1D 蒙版,每个蒙版的形状为 640?你能解释一下面具是什么吗?
    • 哦,masks 是一个原生 python 列表,包含每个形状 (296, 640) 的 np.ndarrays。抱歉,我之前没有弄清楚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 2015-12-03
    相关资源
    最近更新 更多