Работа с изображениями в Matplotlib - PullRequest
0 голосов
/ 12 ноября 2018

Это немного наивный вопрос, но я новичок в науке о данных, поэтому вопрос. Я следую за курсом, который читает 2D-изображение и выполняет следующую операцию,

image = mpimg.imread('test.jpg')
duplicate = np.copy(image)
red_threshold = green_threshold = blue_threshold = 0
rgb_threshold = [red_threshold, green_threshold, blue_threshold]

Конкретно эта строка

thresholds = (image[:,:,0] < rgb_threshold[0]) | (image[:,:,1] < rgb_threshold[1]) | (image[:,:,2] < rgb_threshold[2])
duplicate[thresholds] = [0,0,0]

Объяснение этой строки кода:

Результат, дубликат, представляет собой изображение, в котором пиксели были выше порог был сохранен, а пиксели ниже порога были затемненный.

Я просто не понимаю, как? Может кто-нибудь немного разбить это и помочь мне понять, что здесь происходит?

1 Ответ

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

Вышеприведенное выражение,

thresholds = (image[:,:,0] < rgb_threshold[0]) | (image[:,:,1] < rgb_threshold[1]) | (image[:,:,2] < rgb_threshold[2])

разворачивались:

image[:,:,0] 

здесь 3-й индекс, 0 - канал изображения из RGB , поэтому image[:,:,0], image[:,:,1], image[:,:,2] - это RGB channel s 'пикселей соответственно.

image[:,:,0] < rgb_threshold[0]) 

означает, что нам нужны только пиксели с значением ниже значения фактического канала , здесь 0.

В этом случае мы намереваемся получить сумму пустых массивов значений пороговых цветовых каналов с помощью побитового или оператора |, например, например:

import numpy as np

a = np.array([26,0,46,])
b = np.array([0,55,1,])

print(a | b)

Из:

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