33

宿題をしていると、Python と画像操作に関する問題に出くわしました。Image lib を使用することは選択肢ではありません。だからここにあります

from scipy.misc import imread,imsave
from numpy import zeros

imga = zeros([100,100,3])
h = len(imga)
w = len(imga[0])

for y in range(h):
    for x in range(w):
        imga[y,x] = [255,255,255]

imsave("Result.jpg",imga)

私はそれが私の写真を白くすると思いますが、それは黒くなります.なぜそれがコードに関するものではないのか分かりません. それはまさに、それが黒いイメージであることです。

4

6 に答える 6

69

イメージ内のすべての色は 1 バイトで表されます。したがって、画像配列を作成するには、その dtype を uint8 に設定する必要があります。

また、for ループですべての要素を 255 に設定する必要はありません。fill() メソッドまたはスライス インデックスを使用できます。

import numpy as np
img = np.zeros([100,100,3],dtype=np.uint8)
img.fill(255) # or img[:] = 255
于 2012-05-06T12:28:46.603 に答える
1

imga を作成するときは、ユニットの種類を設定する必要があります。具体的には、次のコード行を変更します。

imga = zeros([100,100,3], dtype=np.uint8)

そして、インポートに次を追加します。

import numpy as np

それは私のマシンに白いイメージを与えます。

于 2012-05-05T20:41:53.893 に答える
0

この質問の見出しに関しては、白い画像と枕の入力が必要でした。そして、ここで提示された解決策は私にはうまくいきませんでした。

したがって、他の目的で白い画像を生成する別の方法を次に示します。

from PIL import Image
img = Image.new('RGB', (200, 50), color = (255,255,255))

サイズと色は、Image.new() 関数の 2 番目と 3 番目のパラメーターで変更できます。

この画像に何かを書き込んだり保存したりしたい場合、これがサンプルコードになります。

from PIL import ImageFont, ImageDraw
fnt = ImageFont.truetype("Pillow/Tests/fonts/FreeMono.ttf", 30)
ImageDraw.Draw(img).text((0,0), "hello world", font=fnt, fill=(0,0,0))
img.save('test.jpg')
于 2021-06-09T21:46:01.170 に答える