Получение красного, зеленого и синего канала из цветного изображения в Python

Чтобы извлечь красный канал изображения, мы сначала прочитаем цветное изображение с помощью cv2, а затем извлечем 2D-массив.

В этом руководстве Python мы узнаем, как извлечь красный канал из цветного изображения, применив нарезку массива к представлению массива numpy изображения.

Пошаговый процесс извлечения

Ниже приводится последовательность шагов по извлечению красного канала из изображения:

  1. Прочтите изображение с помощью cv2.imread().
  2. imread() возвращает массив BGR (Blue-Green-Red), это трехмерный массив, т.е. массивы 2D пикселей для трех цветовых каналов.
  3. Извлеките только красный канал, разрезав массив.

Пример 1

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

Как извлечь красный канал из изображения?

import cv2
 
#read image
src = cv2.imread('D:/cv2-resize-image-original.png', cv2.IMREAD_UNCHANGED)
print(src.shape)

#extract red channel
red_channel = src[:,:,2]

#write red channel to greyscale image
cv2.imwrite('D:/cv2-red-channel.png',red_channel)

Мы добавили к изображению красный канал. Поскольку это всего лишь 2D-массив со значениями от 0 до 255, выходные данные выглядят как изображение в оттенках серого, но это значения красного канала.

Выходные данные, как изображение в оттенках серого

Если вы посмотрите на треугольники, более зеленый и синий будут темнее другого.

Чтобы визуализировать изображение в красном цвете, сведем к нулям синюю и зеленую составляющие.

import cv2
import numpy as np

#read image
src = cv2.imread('D:/cv2-resize-image-original.png', cv2.IMREAD_UNCHANGED)
print(src.shape)

# extract red channel
red_channel = src[:,:,2]

# create empty image with same shape as that of src image
red_img = np.zeros(src.shape)

#assign the red channel of src to empty image
red_img[:,:,2] = red_channel

#save image
cv2.imwrite('D:/cv2-red-channel.png',red_img)

Визуализация изображения в красном цвете

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

Как получить зеленый канал?

Чтобы извлечь зеленый канал изображения, сначала прочитайте цветное изображение с помощью библиотеки OpenCV в Python, а затем извлеките 2D-массив зеленого канала из массива изображений, используя нарезку изображения.

В этом уроке мы научимся извлекать зеленый канал с помощью примеров программ.

Пошаговый процесс извлечения

Ниже приведен пошаговый процесс извлечения зеленого канала из изображения:

  1. Прочтите изображение с помощью cv2.imread().
  2. imread() возвращает массив BGR (Blue-Green-Red), это трехмерный массив, т.е. массивы 2D пикселей для трех цветовых каналов.
  3. Извлеките только зеленый канал, разрезав массив.

Пример 1

В следующем примере мы реализуем все шаги, упомянутые выше, чтобы извлечь Зеленый канал из следующего изображения.

Как извлечь Зеленый канал из изображения?

import cv2
 
#read image
src = cv2.imread('D:/cv2-resize-image-original.png', cv2.IMREAD_UNCHANGED)
print(src.shape)

#extract green channel
green_channel = src[:,:,1]

#write green channel to greyscale image
cv2.imwrite('D:/cv2-green-channel.png',green_channel)

Мы добавили зеленый канал к изображению. Поскольку это всего лишь 2D-массив со значениями от 0 до 255, выходные данные выглядят как изображение в оттенках серого, но это значения зеленого канала.

Выходные данные, как изображение в оттенках серого OpenCV

Если вы посмотрите на треугольники, красный и синий темнее другого.

Чтобы визуализировать изображение в зеленом цвете, сделаем красную и синюю составляющими нулями.

import cv2
import numpy as np

#read image
src = cv2.imread('D:/cv2-resize-image-original.png', cv2.IMREAD_UNCHANGED)
print(src.shape)

# extract green channel
green_channel = src[:,:,1]

# create empty image with same shape as that of src image
green_img = np.zeros(src.shape)

#assign the green channel of src to empty image
green_img[:,:,1] = green_channel

#save image
cv2.imwrite('D:/cv2-green-channel.png',green_img)

Визуализация изображения в зеленом цвете

Мы узнали, как извлечь зеленый канал из изображения.

Как получить синий канал?

Чтобы извлечь синий канал изображения в Python, сначала прочтите цветное изображение с помощью библиотеки OpenCV, а затем извлеките 2D-массив синего канала из массива изображений, используя нарезку изображения.

Пошаговый процесс извлечения

Ниже приведена последовательность шагов для получения синего канала цветного изображения:

  1. Прочтите изображение с помощью cv2.imread().
  2. imread() возвращает массив BGR (Blue-Green-Red), это трехмерный массив, т.е. массивы 2D пикселей для трех цветовых каналов.
  3. Извлеките только синий канал, обратившись к массиву.

Пример 1

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

Извлечение синего канала из изображения

import cv2
 
#read image
src = cv2.imread('D:/cv2-resize-image-original.png', cv2.IMREAD_UNCHANGED)
print(src.shape)

#extract blue channel
blue_channel = src[:,:,0]

#write blue channel to greyscale image
cv2.imwrite('D:/cv2-blue-channel.png',blue_channel)

Мы добавили синий канал к изображению. Поскольку это всего лишь 2D-массив со значениями от 0 до 255, выходные данные выглядят как изображение в оттенках серого, но это значения синего канала.

Выходное изображение (синий канал) в OpenCV

Если вы посмотрите на треугольники, красный и зеленый темнее другого.

Чтобы визуализировать изображение в синем цвете, сведем к нулю красную и зеленую составляющие.

import cv2
import numpy as np

#read image
src = cv2.imread('D:/cv2-resize-image-original.png', cv2.IMREAD_UNCHANGED)
print(src.shape)

# extract blue channel
blue_channel = src[:,:,0]

# create empty image with same shape as that of src image
blue_img = np.zeros(src.shape)

#assign the red channel of src to empty image
blue_img[:,:,0] = blue_channel

#save image
cv2.imwrite('D:/cv2-blue-channel.png',blue_img)

Визуализация изображения в синем цвете

В этом уроке на примерах Python мы узнали, как извлечь синий канал из изображения.

2 комментария для “Получение красного, зеленого и синего канала из цветного изображения в Python

  1. а как сделать так чтобы было выведено сразу 3 цветовых канала? красный зеленый синий одновременно разными изображениями? например красные зеленые и синие горы?

    1. import cv2
      import numpy as np
      import matplotlib.pyplot as plt

      src = cv2.imread(‘D:/cv2-resize-image-original.png’, cv2.IMREAD_UNCHANGED)
      print(src.shape)

      red_channel = rect[:,:,2]
      green_channel = rect[:,:,1]
      blue_channel = rect[:,:,0]

      red_img = np.zeros(src.shape)
      red_imgt[:,:,2] = red_channel

      green_img = np.zeros(src.shape)
      green_img[:,:,1] = green_channel

      blue_img = np.zeros(src.shape)
      blue_img[:,:,0] = blue_channel

      cv2.imshow(‘red channel’, red_img)
      cv2.imshow(‘green channel’, green_img)
      cv2.imshow(‘blue channel’, blue_img)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *