递减一张图片蓝色通道的所有奇数值

Decrement all the odd values of the Blue channel of a picture

我有一张形状为 (455,500,3) 的图像。 我想要做的是减少蓝色通道的所有奇数值,并且只减少蓝色通道。 我这样做了,但它不起作用:

for i in range(im_modif[i,i,2]):
    if np.all(im_modif[:,:,2]%2!=0):
        im_modif[i][i][i]-1

让我们做一个可重现的例子:

import numpy as np

x = np.random.randint(0, 256, (100, 100, 3))

现在您可以 select 来自第三个(蓝色)通道的所有值,在对 2 进行模运算后得到 1,并将它们全部减去 1:

x[..., -1][np.mod(x[..., -1], 2) == 1] -= 1

现在所有的值都是偶数(我想这就是你想要的):

array([[162, 138, 222, ..., 200,  58, 216],
       [ 34,   2,  86, ..., 150, 122,  28],
       [104, 206, 238, ...,  40,  86, 238],
       ...,
       [ 24, 182,  28, ...,  86, 176,  28],
       [184, 206, 140, ...,  26,  22,  80],
       [238, 140, 142, ..., 216,  62,  80]])