如何使用 numpy 和 matplotlib 制作灰度图像

How to make grayscale image using numpy and matplotlib

我想做一张灰度图,但出现这样的错误,我已经在 google 上搜索过,但没有得到答案,我不知道应该使用什么关键字来搜索它google.

我的代码:

!pip install matplotlib
import numpy as np
import matplotlib.pyplot as plt

img = plt.imread('/content/drive/MyDrive/Colab Notebooks/gambar.jpg')
img = np.zeros([120, 300, 3], dtype=np.uint8)

h, w = img[:2]

for x in range(w):
  for y in range(h):
    gray = (20 + 125 + 255) / 3
    img[y,x] = gray

plt.imshow(img)
plt.show()

错误输出:

TypeError                                 Traceback (most recent call last)
<ipython-input-43-e6c1f87f1234> in <module>()
      8 h, w = img[:2]
      9 
---> 10 for x in range(w):
     11   for y in range(h):
     12     gray = (20 + 125 + 255) / 3

TypeError: only integer scalar arrays can be converted to a scalar index

查看答案 here。接受的答案显示同时使用 Pillow 和 numpy/matplotlib.

如果最终目标只是将图像保存为灰度版本,那么 Pillow 就可以完成这项工作。如果目标是将灰度版本发送到需要 numpy/matplotlib 的脚本的其他部分,您可以使用上面答案的第二部分 link 或将 Pillow 对象转换为 numpy数组如图 here.