替换Matplot图像中的像素

时间:2018-12-17 16:33:36

标签: python numpy matplotlib python-imaging-library

我有两张图片作为NDArray的

  1. 原始图像
  2. 预测蒙版。

例如,我想“遮盖”没有遮罩let result = array.map((val, i) => i + 1 + "." + val); console.log(result); 的区域

为简单起见,我在下面将它们粘贴为3x3微小图像,每个像元都是像素的RGB值

原始

6

预测

[
    [1,1,1], [1,5,1], [1,1,1]
    [3,3,3], [3,3,3], [3,3,3]
    [1,1,1], [5,2,1], [1,1,1]
]

要做到这一点,我只是遍历预测并用[0,0,0]替换原始单元格,以清除我不想要的单元格

[
    [0, 0, 0]
    [6, 6, 6]
    [1, 2, 3]
]

很痛苦很慢。有更好的方法吗?

谢谢

2 个答案:

答案 0 :(得分:1)

您可以做类似的事情

img = np.array([[[1,1,1], [1,5,1], [1,1,1]],[[3,3,3], [3,3,3], [3,3,3]],[[1,1,1], [5,2,1], [1,1,1]]])
predict = np.array([[0,0,0],[6,6,6],[1,2,3]])
img[predict!=6] = [0,0,0]

答案 1 :(得分:1)

您可以使用Boolean or “mask” index arrays

mask = (predict != 6)   # create a 2D boolean array, which can be used for indexing
img[mask] = [0,0,0]