Как изменить цвет пикселей на белые пиксели - PullRequest
0 голосов
/ 02 марта 2019

Я получил цветное изображение в качестве ввода и хочу проверить информацию о цвете (например, [0, 0, 0] - [255, 255, 255]) на дисперсию.Поэтому, если дисперсия превышает определенную точку, я хочу изменить ее на белый.

Итак, что-то вроде этого:

for y in range(img.shape[0]):
    for x in range(img.shape[1]):
        if numpy.var(img[y][x]) > 1000:
            img[y][x] = [255, 255, 255]

Но мне нужна хорошая производительность.Поэтому я попытался сделать это с помощью функции numpy.where (), но не смог найти решение.

1 Ответ

0 голосов
/ 02 марта 2019

Для этого можно использовать индексирование numpy:

import numpy as np
import matplotlib.pyplot as plt

img = (np.random.rand(100,100,3)*255).astype(int)

img2 = np.copy(img)
img2[np.var(img, 2)>1000] = np.array([255, 255, 255])

fig, ax = plt.subplots(ncols=2)

ax[0].imshow(img)
ax[1].imshow(img2)

Второй параметр np.var - это ось, по которой вы хотите вычислить дисперсию;в этом случае цвета.

Результат:

enter image description here

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