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

我有一个 RGB 彩色图像蒙版mask_color,形状 (4,4,3)。如何快速将所有黑色像素转换[0,0,0]为白色[255,255,255],不使用任何循环,不使用额外的包,最好是 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()

http://img.mukewang.com/62ba61de0001031302640253.jpg

white_bg_mask_color = # do something

plt.imshow(white_bg_mask_color)

plt.show()

http://img3.mukewang.com/62ba61ec0001d89f02610250.jpg

婷婷同学_
浏览 361回答 2
2回答

翻阅古今

您可以使用 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_color[np.all(mask_color==0, axis=2)] = 255 mask_color
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python