替换matplot imag中的像素

2024-09-30 00:31:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两张NDArray的照片

  1. 原始图像
  2. 预测面具

例如,我想将遮罩不在6的区域“白化”

为了简单起见,我把它们贴成3x3的小图片,每个单元格都是像素的RGB值

原件

[
    [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]
    [6, 6, 6]
    [1, 2, 3]
]

为了做到这一点,我只是在预测中循环,用[0,0,0]替换原来的单元格,以删除我不想要的单元格

for rowIndex, predictedPointRow in enumerate(predict):
    for colIndex, predPoint in enumerate(predictedPointRow):
        if predPoint is not 6:
            img[rowIndex][colIndex] = [0, 0, 0]

然而,这是痛苦的缓慢。有更好的方法吗

谢谢你


Tags: in图像区域for图片像素照片ndarray
2条回答

你可以这样做

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]

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

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

相关问题 更多 >

    热门问题