Как извлечь зеленый канал из изображения RGB в Python с помощью библиотеки Scikit-Image?
Я чрезвычайно новичок в scikit-image (skimage
) библиотека в Python для обработки изображений (запущена несколько минут назад!). Я использовал imread
для чтения файла изображения в numpy.ndarray
. Массив имеет 3 измерения, где размер третьего измерения равен 3 (а именно по одному для каждого из красных, зеленых и синих компонентов изображения).
rgb_image = imread("input_rgb_image.jpg")
rgb_image.shape # gives (1411L, 1411L, 3L)
Я попытался извлечь зеленый канал Как:
green_image = rgb_image[:,:,1]
но когда я пишу эту матрицу изображений в выходной файл as:
imsave("green_output_image.jpg",green_image)
Я получаю изображение, которое на самом деле не выглядит только зеленым!
1 ответов
то, что вы извлекаете, - это всего лишь один канал, и это показывает, сколько зеленого цвета имеет каждый пиксель. В конечном итоге это будет визуализировано как изображение в оттенках серого, где более темные пиксели означают, что в этих точках не так много "зелени", а более светлые пиксели означают, что в этих точках есть большое количество "зелени".
Так:
green_image = rgb_image.copy() # Make a copy
green_image[:,:,0] = 0
green_image[:,:,2] = 0
обратите внимание, что я сделал копию вашего исходного изображения и изменил каналы вместо изменения исходного в случае, если вам это нужно. Однако, если вы просто хотите извлечь зеленый канал и визуализировать его как изображение в оттенках серого, как я упоминал выше, то сделайте то, что вы сделали выше, с настройкой вашего green_image
переменная в порядке.