Pythonanywhere:matplotlib.pyplot.imgopen 创建一个无法修改的 numpy.array

Pythonanywhere: matplotlib.pyplot.imgopen creates a numpy.array that cannot be modified

我在使用 matplotlib 编辑图像像素时遇到问题。

Python 3.7.5 (default, Nov 14 2019, 22:26:37) 
>>> import matplotlib.pyplot as plt
>>> img = plt.imread('allo.JPG')
>>> img[0][0]
array([255, 255, 255], dtype=uint8)
>>> img[0][0][1]
255
>>> img[0][0][1]=40
Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
ValueError: assignment destination is read-only

我以各种方式探索了这个错误,但都无济于事。想法?

该 img 数组的可写标志设置为 False。

您可以制作一个副本,它会将标志设置为 True:

>>> img.flags
  C_CONTIGUOUS : True
  F_CONTIGUOUS : False
  OWNDATA : False
  WRITEABLE : False
  ALIGNED : True
  WRITEBACKIFCOPY : False
  UPDATEIFCOPY : False

>>> img1 = img.copy()
>>> img1.flags
  C_CONTIGUOUS : True
  F_CONTIGUOUS : False
  OWNDATA : True
  WRITEABLE : True
  ALIGNED : True
  WRITEBACKIFCOPY : False
  UPDATEIFCOPY : False