我正在使用numpy构建像素数组。 800x600图像是uint8的3维数组,即800x600x3。我也有一个带有固定模式的类似数组(一个棋盘,请参阅here)。我有另一个数组,掩码值为800x600。如果 mask 为零,我想将图案像素复制到图像像素。在蒙版不为零的情况下,我想单独保留图像像素。

>>> image.shape
(800, 600, 3)
>>> chex.shape
(800, 600, 3)
>>> mask.shape
(800, 600)

感觉应该可行:
image[mask == 0,...] = chex

但给出“ValueError:数组无法广播以更正形状”。

如何将chex像素复制到mask为零的图像像素?

最佳答案

idx=(mask==0)
image[idx]=chex[idx]

请注意,image的形状为(800,600,3),而idx的形状为(800,600)。 The rules用于建立索引状态



因此,索引数组具有其自身的某种广播能力。 idx的形状提升为(800,600,:)

关于python - 使用numpy掩盖带有图案的图像?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2169605/

10-11 02:42