根据像素的颜色生成 RGB 图像的布尔掩码的最pythonic 方法是什么?

nim*_*.py 5 python numpy image-processing slice numpy-slicing

我有一张图片,其中有一个缺失的部分,我知道它被涂成了绿色(第一张图片)。生成另一个“布尔值”图像的最pythonic 方法是什么,该图像显示缺失部分的白色和非缺失部分的黑色(第二张图像)?

缺失部分为绿色的图像 以白色显示缺失部分(蒙版),以黑色显示其余部分的图像

是否可以在没有 for 循环的情况下完成它,而只是使用数组切片?

我的图像是一个形状为 numpy 的数组[height, width, 3]。我希望以下代码分配一个二维布尔数组,显示每个像素的值是否为绿色 ( [0, 255, 0])。

mask = image[:, :] == [0, 255, 0]
Run Code Online (Sandbox Code Playgroud)

但是,它返回一个与图像 ( [height, width, 3])形状相同的数组,显示像素的红色、绿色或蓝色值分别是 0、255 还是 0。我可以在这里以某种方式使用any()all()方法吗?

Lag*_*aer 5

你的想法是正确的。要使用的东西是 numpy 的alltrue

mask = np.alltrue(image == [0, 255, 0], axis=2)