递减一张图片蓝色通道的所有奇数值
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]])
我有一张形状为 (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]])