Я пытаюсь реализовать функцию, которая разбивает изображение на каналы: 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)