FD ** - Jestem nowicjuszem w Pythonie, a także przepełnieniem stosu, jak można powiedzieć. Edytowałem pytanie na podstawie komentarzy.np. Tablice są niezmienne - "miejsce przeznaczenia jest tylko do odczytu"
Moim celem jest odczytanie zestawu plików PNG, utworzenie obrazu (obrazów) za pomocą Image.open ("nazwa pliku") i przekonwertowanie ich na proste tablice 2D z tylko 1s i 0s. Plik PNG ma format RGBA, a wartościami są tylko 255 i 0. Dość często na obrazach krawędzie są wartościami skali szarości, których chciałbym uniknąć w tablicy 2D.
Stworzyłem tablicę 2D z obrazu za pomocą np.asarray (Image) pobierając tylko kanał "Red". W każdej z matryc obrazów 2d chciałbym ustawić wartość komórki = 1, jeśli bieżąca wartość jest różna od zera.
Tak, pętla do 2d tablicy i sprawdzić wartość komórki i spróbuj ustawić go na 1.
To daje mi błąd informujący, że tablica jest tylko do odczytu. Przeczytałem kilka wątków przepełnienia stosu, omawiając, że np. Tablice są niezmienne i jest jeszcze trochę niejasna. Używam PIL i numpy
Dzięki @ user2314737. Spróbuję ustawić tę flagę. @Eric, dzięki za twoje uwagi.
from PIL import Image
import numpy as np
Odpowiedni kod:
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
Błąd „przypisanie docelowe jest tylko do odczytu” jest w ostatnim wierszu.
Dziękuję wszystkim za pomoc.
istnieją liczne linki http://stackoverflow.com/questions/13572448/change -values-in-a-numpy-array sugeruje co najmniej dwa: – NaN
Skąd się wzięło 'img' i dlaczego potrzebujesz' asarray'? – Eric
Cała ta część kodu może być lepiej napisana 'prArray = prArray! = 0' – Eric