Python 使用NumPy将黑色像素转换为白色的最快方法
我有一个RGB彩色图像遮罩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],
遮罩颜色
,形状(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]]])