Numpy и matplotlib: невозможно редактировать массив изображений - PullRequest
0 голосов
/ 06 августа 2020
import numpy as np 
import matplotlib.pyplot as plt
from PIL import Image

pic = Image.open('mountain1.jpg')
pic_array = np.asarray(pic)
# plt.imshow(pic_array[:,:,2], cmap='gray')
pic_array[:,:,2]=0
plt.imgshow(pic_array)
plt.show()

я получаю следующую ошибку: / pic_array [:,:, 2] = 0 ValueError: назначение назначения доступно только для чтения. Как отредактировать массив?

1 Ответ

1 голос
/ 06 августа 2020

Проблема в том, что в коде исходное изображение и массив numpy используют одну и ту же память. отсюда и ошибка только для чтения, когда вы пытаетесь обновить массив.

Создайте копию как исходный массив, и все будет в порядке.

Еще одна небольшая вещь, которую я заметил, это plt.imgshow ( image) используется вместо plt.imshow (image).

import numpy as np 
import matplotlib.pyplot as plt
from PIL import Image

pic = Image.open('mountain1.jpg')
# copy of the numpy array so that the original image is not changed.
pic_array = np.asarray(pic).copy()
pic_array[:,:,2]=0
plt.imshow(pic_array)

Cheers!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...