RGB图像呢?
img[img[:, :, 0] < 255, 0] = 255
使用此方法,我们从图像的红色通道创建一个布尔蒙版,并检查其值是否小于255。如果是,则将这些值设置为255。
OpenCV将图像读取为
BGR,因此:
img[img[:, :, 2] < 255, 2] = 255
将是适当的。
或者,您也可以执行以下操作:
mask_R = img < 255)[:, :, 2]img[mask_R, 2] = 255
例:
In [24]: aOut[24]: array([[[168], [170], [175]], [[169], [170], [172]], [[165], [170], [174]]])In [25]: a > 170Out[25]: array([[[False], [False], [ True]], [[False], [False], [ True]], [[False], [False], [ True]]], dtype=bool)
使用以上条件(
a >170),我们生成一个布尔掩码。现在,假设您采用任何一个通道并将其放置在此布尔掩码的顶部。当我们分配新值时,无论蒙版有何
true值,图像数组中的相应元素都将被重置为新值。
# we just filter out the values in array which match our conditionIn [36]: a[a > 170]Out[36]: array([175, 172, 174])# assign new values. Let's say 180In [37]: a[a > 170] = 180In [38]: aOut[38]: array([[[168], [170], [180]], # <== new value [[169], [170], [180]], # <== new value [[165], [170], [180]]]) # <== new value



