Замена цвета пикселя изображения при условии в Python - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть изображение RGBA, где я должен найти, имеет ли какой-либо пиксель значение красного <150, и заменить такие пиксели черным. Я использую следующий код для этого: </p>

import numpy as np
imgarr = np.array(img)
for x in range(imgarr.shape[0]):
    for y in range(imgarr.shape[1]):
        if imgarr[x, y][0] < 150:    # red value < 150
            imgarr[x, y] = (0,0,0,255)

Однако это медленный цикл, и я уверен, что его можно оптимизировать с помощью некоторой функции, такой как numpy.where , но я не могу вписать его в этот код. Как это можно решить?

1 Ответ

0 голосов
/ 10 ноября 2018

Используйте np.where с маской сравнения с пороговым значением -

img = np.asarray(img)
imgarr = np.where(img[...,[0]]<150,(0,0,0,255),img)

Мы используем img[...,[0]], чтобы сохранить количество тусклых димов, необходимое для транслируемого назначения, с помощью np.where. Таким образом, другим способом было бы использовать img[...,0,None]<150, чтобы получить маску, которая сохраняет тусклость.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...