我有RGB彩色图像遮罩mask_color
,形状为(4,4,3)。如何在不使用任何循环,没有其他程序包的情况下(最好是numpy的方式)将所有黑色像素[0,0,0]
迅速转换为白色[255,255,255]
?
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()
white_bg_mask_color = # do something
plt.imshow(white_bg_mask_color)
plt.show()
答案 0 :(得分:1)
您可以使用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]]])
答案 1 :(得分:0)
您还可以使用如下所示的布尔索引进行操作
mask_color[np.all(mask_color==0, axis=2)] = 255
mask_color