提问者:小点点

获取三维数组作为参数并返回三维数组


我必须编写一个函数,将绿色和蓝色的分量归零,然后返回结果。我为一个图像(.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()


共2个答案

匿名用户

你可以这样写你的函数:

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