Разложение изображения на три канала - PullRequest
0 голосов
/ 06 октября 2019

Я пытаюсь реализовать функцию, которая разбивает изображение на каналы: R, G и B и возвращает изображение, исключая указанный канал. Но все, что я получаю, это черное изображение. Поскольку я новичок в манипулировании изображениями, помощь будет отличной.

import math
from PIL import Image
import numpy as np
from skimage import color, io
import matplotlib.pyplot as plt


def load(image_path):
    out = plt.imread(image_path)

    out = out.astype(np.float64) / 255
    return out

def display(img):
    # Show image
    plt.figure(figsize = (5,5))
    plt.imshow(img)
    plt.axis('off')
    plt.show()


def rgb_exclusion(image, channel):
    out = image
    if channel == 'R':
        out[:, :, 0] = 0
    elif channel == 'G':
        out[:, :, 1] = 0
    elif channel == 'B':
        out[:, :, 2] = 0


image1 = load(image1_path)
image2 = load(image2_path)

display(image1)
display(image2)

without_red = rgb_exclusion(image1, 'R')
without_blue = rgb_exclusion(image1, 'B')
without_green = rgb_exclusion(image1, 'G')

print("Below is the image without the red channel.")
display(without_red)

print("Below is the image without the green channel.")
display(without_green)

print("Below is the image without the blue channel.")
display(without_blue)
...