Python 切片3d numpy阵列并设置像素的rgb值

Python 切片3d numpy阵列并设置像素的rgb值,python,numpy,slice,Python,Numpy,Slice,我要做的是获取一个我读入的图像文件(scipy.misc.imread(文件)),并将每个单独的RGB值更改为该像素的三个值的平均值 例如,我可以在一个单独的像素上执行以下操作: import numpy as np from scipy import misc import matplotlib.pyplot as plt from skimage import data img = misc.imread('./path/to/file.jpg') print(img[200, 200])

我要做的是获取一个我读入的图像文件(scipy.misc.imread(文件)),并将每个单独的RGB值更改为该像素的三个值的平均值

例如,我可以在一个单独的像素上执行以下操作:

import numpy as np
from scipy import misc
import matplotlib.pyplot as plt
from skimage import data

img = misc.imread('./path/to/file.jpg')
print(img[200, 200]) #[145 165 155]
print(img[200, 200]) = int(np.sum(img[200, 200])/3) # sets RGB values at img[200, 200] to the average of the RGB values in this case, 155
print(img[200, 200]) # changed to [155 155 155]
然而,我对numpy和Ndarray还不熟悉,我想知道如何使用切片将其应用于图像中的每个像素。这可能吗?我很难理解如何迭代整个ndarray并引用适当的值进行求和和和设置


欢迎任何帮助

你可以用numpy取平均值

import numpy as np
import matplotlib.pyplot as plt

from scipy import misc

img = misc.imread('baboon.png')
mean_img = img.mean(axis=2)

plt.imshow(mean_img, cmap=plt.cm.gray)
plt.show()