我必须编写一个函数,将绿色和蓝色的分量归零,然后返回结果。我为一个图像(.png)编写了下面的代码,将绿色和蓝色归零,并返回红色,它成功了。但是,如标题中所述,输入参数必须是一个3-d数组并返回一个3-d数组。我下面的代码应该如何更改。
import numpy as np
导入matplotlib。pyplot作为plt
from matplotlib.pyplot import imshow
def to_red()
src = plt.imread("C:\src\painting.png")
red_channel=src[:,:,0]
red_img = np.zeros(src.shape)
红色\u img[:,:,0]=红色\u通道
plt.imshow(red_img)
plt。show()
你可以这样写你的函数:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.pyplot import imshow
def to_red(src):
# Check if the input dimension is 3
if not src.ndim == 3:
# Raise exception or do something
print ("Dimension mismatch")
return 0
red_channel = src[:,:,0]
red_img = np.zeros(src.shape)
red_img[:,:,0] = red_channel
return red_img
然后你可以这样称呼它
source_image = plt.imread("C:\src\painting.png")
red_image = to_red(source_image)
plt.imshow(red_image)
plt.show()
我还添加了一行来检查输入是否是三维的。
您可以使用numpy
强大的索引功能
def to_red(src):
ret = a.copy()
ret[:,:,1:] = 0
return ret