python - 切片 3d numpy 数组并设置像素的 RGB 值

标签 python numpy slice

我想要做的是获取我读入的图像文件 (scipy.misc.imread(file)) 并将每个单独的 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 和 ndarrays 的新手,我想知道如何使用切片将其应用于图像中的每个像素。这可能吗?我无法理解如何迭代整个 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()

enter image description here enter image description here

关于python - 切片 3d numpy 数组并设置像素的 RGB 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47624842/

相关文章:

mysql - Golang 加入数组接口(interface)

replace - 如何找到每个匹配的 byte slice 并将其替换为另一个片?

Python3 使用 Metaclass 创建 JSON 文件中定义的类

python - 使用 BeautifulSoup 迭代整个表?

python - 如何在 Python 中使用 dorpi5 或 dop853

python - 从单个列创建多个列

python - 如何在Python中使用if语句生成随机数?

python - 根据值过滤defaultdict

python - 如何将图像裁剪、调整大小表示为仿射变换?

python - getslice 在 Python2.6 中被弃用,但在子类化元组时仍在使用?