替换像素np.Python中的数组值



我有一个图像作为np。数组,形状为(320,240,4)。我想替换所有具有数组值(1,0,0,1)的单个像素,这是红色到绿色的数组值(0,1,0,1)。我试过使用np.all(),但它不起作用,虽然我没有得到任何错误。下面是我的代码:

mario = mpimg.imread("mario_big.png")
print(mario.shape) # (320, 240, 4)
mario[np.all(mario == (1, 0, 0, 1), axis=-1)] = (0, 1, 0, 1)
luigi = mario
plt.imshow(luigi)
plt.show()

马里奥是这样的:

[[[0.        0.        0.        0.       ]
[0.        0.        0.        0.       ]
[0.        0.        0.        0.       ]
...
[0.        0.        0.        0.       ]
[0.        0.        0.        0.       ]
[0.        0.        0.        0.       ]]
[[0.        0.        0.        0.       ]
[0.        0.        0.        0.       ]
[0.        0.        0.        0.       ]
...
[0.        0.        0.        0.       ]
[0.        0.        0.        0.       ]
[0.        0.        0.        0.       ]]
[[0.        0.        0.        0.       ]
[0.        0.        0.        0.       ]
[0.        0.        0.        0.       ]
...
[0.        0.        0.        0.       ]
[0.        0.        0.        0.       ]
[0.        0.        0.        0.       ]]
...

请建议。

你的代码是工作的(见这个答案):

>>> mario = np.random.randint(0, 2, (3, 2, 4))
array([[[1, 1, 1, 0],
[1, 0, 0, 1]], ## <-
[[0, 0, 1, 0],
[0, 0, 1, 0]],
[[0, 0, 0, 0],
[0, 1, 1, 1]]])
>>> mario[np.all(mario == (1, 0, 0, 1), axis=-1)] =  (0, 1, 0, 1)
>>> mario
array([[[1, 1, 1, 0],
[0, 1, 0, 1]], ## <-
[[0, 0, 1, 0],
[0, 0, 1, 0]],
[[0, 0, 0, 0],
[0, 1, 1, 1]]])

最新更新