假设 hsv 作为输入 hsv 图像数据,您可以使用一些 reshaping 和 boolean indexing 将所有三个通道设置为通用三元组,就像这样 -
newvals = np.array([127,64,100])
mask = (hsv[:,:,0] < 20) | (hsv[:,:,2]> 200)
hsv.reshape(-1,3)[mask.ravel()] = newvals
示例运行 -
In [13]: hsv
Out[13]:
array([[[155, 179, 207],
[200, 52, 185],
[241, 139, 232],
[188, 149, 117]],
[[145, 169, 116],
[146, 134, 108],
[ 74, 34, 121],
[ 9, 190, 91]],
[[240, 207, 228],
[140, 158, 124],
[179, 154, 212],
[ 79, 166, 131]]], dtype=uint8)
In [14]: newvals = np.array([127,64,100])
...: mask = (hsv[:,:,0] < 20) | (hsv[:,:,2]> 200)
...: hsv.reshape(-1,3)[mask.ravel()] = newvals
In [15]: hsv
Out[15]:
array([[[127, 64, 100],
[200, 52, 185],
[127, 64, 100],
[188, 149, 117]],
[[145, 169, 116],
[146, 134, 108],
[ 74, 34, 121],
[127, 64, 100]],
[[127, 64, 100],
[140, 158, 124],
[127, 64, 100],
[ 79, 166, 131]]], dtype=uint8)