代码之家  ›  专栏  ›  技术社区  ›  Benjamin

numpy面具覆盖另一个面具

  •  0
  • Benjamin  · 技术社区  · 6 年前

    我有不同形状的面具。由于某些形状包含其他形状,我想检查一个给定的掩码是否覆盖另一个给定的掩码。例如,考虑以下因素:

    A=[True, True, True, True, True, True, False, False, False, True, True, False, False, False, True, True, False, False, False, True, True, True, True, True, True]

    B=[False, False, False, False, False, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, False, False, False, False, False]

    在5x5图像中,a覆盖B。如何检查A是否覆盖B?

    编辑:

    A=[真的,真的,真的,真的,真的, 真,假,假,假,真,

    B=[False, False, False, False, False, True, True, True, False, False, True, True, True, False, False, False, False, False, False, False, False, False, False, False, False]

    1 回复  |  直到 6 年前
        1
  •  1
  •   Divakar    6 年前

    我们可以填补洞 A 有一个斑点然后表演 OR-ing 具有 B 结果与填充的孔相同 A A 作为“封面”。为了填补漏洞,我们可以使用 SciPy's binary_fill_holes

    from scipy.ndimage.morphology import binary_fill_holes
    
    Af = binary_fill_holes(A)
    out = (Af == Af | binary_fill_holes(B)).all()
    # or np.array_equal(Af, Af | binary_fill_holes(B))