FD ** - 私はPython newbと同様にスタックオーバーフローnewbです。コメントに基づいて質問を編集しました。np配列は不変です - "代入先は読み取り専用です"
私の目標は、一連のPNGファイルを読み込み、Image.open( 'filename')でImageを作成し、1と0のみの単純な2D配列に変換することです。 PNGの形式はRGBAで、値は255と0のみです。イメージでは、エッジはグレースケール値ですが、これは2D配列では避けたいものです。
「赤い」チャンネルだけを取得するnp.asarray(画像)を使用して画像から2D配列を作成しました。現在の値がゼロでない場合、2次元画像配列のそれぞれで、セル値= 1を設定したいと思います。
だから、I 2次元配列へのループと私はセルの値をチェックし、それは私に、配列が読み取り専用であることを示すエラーが発生します。1.
に設定してみてください。私はいくつかのスタックオーバーフロースレッドを読むと、np配列は不変であり、それはまだ不明な点です。私はPILとnumpyを使用します。
ありがとう@ user2314737私はそのフラグを設定しようとします。 @エリック、あなたのコメントにも感謝します。
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
エラー「割当先が読み取り専用であるが、」最後の行です。
皆様、ありがとうございます。
でそれを変更
で書き込み可能な場合、多くのWebリンクがhttp://stackoverflow.com/questions/13572448/changeがあります-values-in-a-numpy-arrayは少なくとも2つを示唆しています – NaN
'img'はどこから来たのですか?なぜ' asarray'が必要ですか? – Eric
この完全なコードは、 'prArray = prArray!= 0'と書く方が良いでしょう。 – Eric