Python 使用NumPy将黑色像素转换为白色的最快方法

Python 使用NumPy将黑色像素转换为白色的最快方法,python,numpy,Python,Numpy,我有一个RGB彩色图像遮罩遮罩颜色,形状(4,4,3)。如何快速将所有黑色像素[0,0,0]转换为白色[255255255],无需使用任何循环,无需额外的软件包,最好是NumPy方式 mask_color = np.array([ [ [0,0,0], [128,0,255], [0,0,0], [0,0,0] ], [ [0,0,0], [0,0,0], [0,0,0], [0,0,0] ], [ [0,0,0], [50,128,0],

我有一个RGB彩色图像遮罩
遮罩颜色
,形状(4,4,3)。如何快速将所有黑色像素
[0,0,0]
转换为白色
[255255255]
,无需使用任何循环,无需额外的软件包,最好是NumPy方式

mask_color = np.array([
 [
  [0,0,0],
  [128,0,255],
  [0,0,0],
  [0,0,0]
 ],
 [
  [0,0,0],
  [0,0,0],
  [0,0,0],
  [0,0,0]
 ],
 [
  [0,0,0],
  [50,128,0],
  [0,0,0],
  [0,0,0]
 ],
 [
  [0,0,0],
  [0,0,0],
  [245,108,60],
  [0,0,0]
 ]
])

plt.imshow(mask_color)
plt.show()

您可以使用np.where:

>>> np.where(mask_color.any(-1,keepdims=True),mask_color,255)
array([[[255, 255, 255],
        [128,   0, 255],
        [255, 255, 255],
        [255, 255, 255]],

       [[255, 255, 255],
        [255, 255, 255],
        [255, 255, 255],
        [255, 255, 255]],

       [[255, 255, 255],
        [ 50, 128,   0],
        [255, 255, 255],
        [255, 255, 255]],

       [[255, 255, 255],
        [255, 255, 255],
        [245, 108,  60],
        [255, 255, 255]]])

您也可以像下面这样使用布尔索引

mask\u color[np.all(mask\u color==0,axis=2)]=255
遮罩颜色
>>> np.where(mask_color.any(-1,keepdims=True),mask_color,255)
array([[[255, 255, 255],
        [128,   0, 255],
        [255, 255, 255],
        [255, 255, 255]],

       [[255, 255, 255],
        [255, 255, 255],
        [255, 255, 255],
        [255, 255, 255]],

       [[255, 255, 255],
        [ 50, 128,   0],
        [255, 255, 255],
        [255, 255, 255]],

       [[255, 255, 255],
        [255, 255, 255],
        [245, 108,  60],
        [255, 255, 255]]])