TLDR; Сделайте все зеленые пиксели белыми с помощью Numpy:
import numpy as np
pixels[np.all(pixels == (0, 255, 0), axis=-1)] = (255,255,255)
Здесь я привел несколько примеров других способов изменения цвета. Сначала я опишу точные значения c RGB, которые вы задали в своем вопросе, используя это изображение. Он имеет три больших блока ровно красного, ровно зеленого и ровно синего цвета слева и три постепенных перехода между этими цветами справа:
![enter image description here](https://i.stack.imgur.com/D1kEY.png)
Вот первоначальный ответ, как указано выше, снова:
#!/usr/bin/env python3
import cv2
import numpy as np
# Load image
im = cv2.imread('image.png')
# Make all perfectly green pixels white
im[np.all(im == (0, 255, 0), axis=-1)] = (255,255,255)
# Save result
cv2.imwrite('result1.png',im)
![enter image description here](https://i.stack.imgur.com/huzrN.png)
На этот раз я определяю названия цветов для дополнительной удобочитаемости и удобства обслуживания. Последняя строка - важный момент:
# Define some colours for readability - these are in OpenCV **BGR** order - reverse them for PIL
red = [0,0,255]
green = [0,255,0]
blue = [255,0,0]
white = [255,255,255]
black = [0,0,0]
# Make all perfectly green pixels white
im[np.all(im == green, axis=-1)] = white
Тот же результат.
На этот раз я делаю маску красных пикселей многократного использования, которую я могу использовать в последующих операциях. Последняя строка с назначением im[Rmask] = black
теперь особенно легко читается:
# Define some colours for readability - these are in OpenCV **BGR** order - reverse them for PIL
red = [0,0,255]
green = [0,255,0]
blue = [255,0,0]
white = [255,255,255]
black = [0,0,0]
# Make mask of all perfectly red pixels
Rmask = np.all(im == red, axis=-1)
# Make all red pixels black
im[Rmask] = black
![enter image description here](https://i.stack.imgur.com/cdGUf.png)
На этот раз я объединить маска красного и синего пикселей, чтобы вы могли видеть силу масок. Последняя строка - важный момент:
# Define some colours for readability - these are in OpenCV **BGR** order - reverse them for PIL
red = [0,0,255]
green = [0,255,0]
blue = [255,0,0]
white = [255,255,255]
black = [0,0,0]
# Make mask of all perfectly red pixels and all perfectly blue pixels
Rmask = np.all(im == red, axis=-1)
Bmask = np.all(im == blue, axis=-1)
# Make all red or blue pixels black
im[Rmask | Bmask] = black
![enter image description here](https://i.stack.imgur.com/8qcLL.png)
И на этот раз я превращаю все не красные пиксели в черные - надеюсь, вы ценим силу масок сейчас. Последняя строка - важный момент:
# Define some colours for readability - these are in OpenCV **BGR** order - reverse them for PIL
red = [0,0,255]
green = [0,255,0]
blue = [255,0,0]
white = [255,255,255]
black = [0,0,0]
# Make mask of all perfectly red pixels
Rmask = np.all(im == red, axis=-1)
# Make all non-red pixels black
im[~Rmask] = black
![enter image description here](https://i.stack.imgur.com/p3bYg.png)
До сих пор мы делали только несколько выделенных пикселей в одном новый цвет. Что если мы хотим сделать несколько пикселей одного цвета, а все остальные пиксели - другим цветом за один проход? Последняя строка - важный момент:
# Define some colours for readability - these are in OpenCV **BGR** order - reverse them for PIL
red = [0,0,255]
green = [0,255,0]
blue = [255,0,0]
white = [255,255,255]
black = [0,0,0]
# Make mask of all perfectly red pixels
Rmask = np.all(im == red, axis=-1)
# Make all red pixels white AND at same time everything else black
im = np.where(np.all(im == red, axis=-1, keepdims=True), white, black)
![enter image description here](https://i.stack.imgur.com/po4K8.png)
Если вы хотите повлиять на весь диапазон из цвета, а не заданное c значение RGB, выглядят здесь и здесь .
Ключевые слова : обработка изображений, Python, премьер, изменить цвет, изменить цвет, премьер.