我正在使用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/