заменить ВСЕ пиксели, если красный канал НЕ найден в списке - PullRequest
1 голос
/ 30 мая 2020

У меня есть цветное изображение и маска со значением numPy, как определено ниже:

img = cv2.imread(path)
mask = [13 16 17 23 24 25 29 30 31 100]

Теперь я хочу изменить ВСЕ пиксели на 0 или черный, если мое цветное изображение имеет значение красного канала НЕТ в моей маске. Я могу сделать это, выполнив al oop, но я хочу сделать это способом numPyi sh. Возможно ли это?

1 Ответ

0 голосов
/ 30 мая 2020

Вы можете использовать np.isin для проверки.

img = cv2.imread(path)
mask = np.array([13, 16, 17, 23, 24, 25, 29, 30, 31, 100])
reds = np.isin(img[:,:,2],mask)

OpenCV загружает изображения в формате bgr, что означает, что красный - это последний канал. np.isin возвращает вам логический массив формы (HxW), сообщающий вам, какие красные пиксели находятся в маске, а какие нет. Затем вы можете выполнить простую проверку, все ли пиксели являются истинными или нет.

if np.prod(reds):
    img[:]=0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...