FD ** - Я новичок в Python, а также переполнение стека newb, как вы можете сказать. Я отредактировал вопрос, основанный на комментариях.
Моя цель - прочитать набор PNG файлов, создать Image с Image.open('filename') и преобразовать их в простые 2D-массивы только с 1 и 0. PNG имеет формат RGBA, в основном только 255 и 0 в качестве значений. Довольно часто в изображениях ребра представляют собой значения шкалы серого, которые я бы хотел избежать в 2D-массиве.
Я создал 2D-массив из изображения, используя np.asarray(Image), получая только "красный" канал. В каждом из массива изображений 2d я хотел бы установить значение ячейки = 1, если текущее значение не равно нулю.
Итак, я петлю в 2d-массив, и я проверяю значение ячейки и пытаюсь установить ее в 1.
Это дает мне ошибку, указывающую, что массив доступен только для чтения. Я прочитал несколько потоков, обсуждая, что np-массивы являются неизменными, и это все еще немного неясно. Я использую PIL и numpy
Спасибо @user2314737. Я попытаюсь установить этот флаг. @Eric, спасибо за ваши комментарии.
from PIL import Image
import numpy as np
Соответствующий код:
prArray = [np.asarray(img)[:, :, 0] for img in problem_images]
for img in prArray:
for x in range(184):
for y in range(184):
if img[x][y] != 0:
img[x][y] = 1
Ошибка "назначение назначения только для чтения" находится в последней строке.
Спасибо всем за помощь.