[解決済み] Image.fromarrayは黒い画像を生成するだけです。
2022-01-28 15:58:30
質問
numpy の行列をグレースケール画像として保存するには、次のようにします。
Image.fromarray
. ランダムな行列ではうまくいくようですが、特定の行列(円が表示されるはずの場所)ではうまくいきません。誰か私が間違っていることを説明できますか?
from PIL import Image
import numpy as np
radius = 0.5
size = 10
x,y = np.meshgrid(np.linspace(-1,1,size),np.linspace(-1,1,size))
f = np.vectorize(lambda x,y: ( 1.0 if x*x + y*y < radius*radius else 0.0))
z = f(x,y)
print(z)
zz = np.random.random((size,size))
img = Image.fromarray(zz,mode='L') #replace z with zz and it will just produce a black image
img.save('my_pic.png')
解決方法は?
Image.fromarray
は浮動小数点数の入力に対してうまく定義されていません。よく文書化されていませんが、この関数は入力が符号なし8ビット整数としてレイアウトされていると仮定しています。
得ようとする出力を得るには、255を掛けて、次のように変換します。
uint8
:
z = (z * 255).astype(np.uint8)
ランダムな配列で動作しているように見えるのは、この配列のバイトを符号なし8ビット整数として解釈すると、これもランダムに見えるからです。しかし、出力は入力と同じランダム配列ではありません。これは、ランダム入力に対して上記の変換を行うことで確認することができます。
np.random.seed(0)
zz = np.random.rand(size, size)
Image.fromarray(zz, mode='L').save('pic1.png')
Image.fromarray((zz * 255).astype('uint8'), mode='L').save('pic2.png')
この問題はどこにも報告されていないようなので、githubで報告しました。 https://github.com/python-pillow/Pillow/issues/2856
関連
-
Pythonの非常に便利な2つのデコレーターを解説
-
Python カメの描画コマンドとその例
-
PythonによるExcelファイルの一括操作の説明
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】csv.Error:イテレータはバイトではなく文字列を返すべき
-
[解決済み】 AttributeError: モジュール 'matplotlib' には属性 'plot' がない。
-
[解決済み] Matplotlibでプロットを表示するのではなく、画像ファイルに保存する。
-
[解決済み] PILを使用して画像のサイズを変更し、縦横比を維持するにはどうすればよいですか?
-
[解決済み】PILイメージをnumpyの配列に変換する方法は?
-
[解決済み】PythonでURLから画像データを読み込むには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python Decorator 練習問題
-
python implement mysql add delete check change サンプルコード
-
任意波形を生成してtxtで保存するためのPython実装
-
Pythonの画像ファイル処理用ライブラリ「Pillow」(グラフィックの詳細)
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法
-
[解決済み】Flaskのテンプレートが見つからない【重複あり