Уменьшение всех нечетных значений синего канала изображения - PullRequest
0 голосов
/ 19 марта 2020

У меня есть изображение формы (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

1 Ответ

3 голосов
/ 19 марта 2020

Давайте сделаем воспроизводимый пример:

import numpy as np

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

Теперь вы можете выбрать все значения из третьего (синего) канала, которые приводят к 1 после операции по модулю с 2, и уменьшить их все на 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]])
...