2012-05-05 2 views
8

私の宿題をすると、私はPythonと画像操作に関する問題を見つけました。私は言う必要があります、イメージのlibを使用するオプションではありません。だからここではPythonで白いイメージを作成するには?

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) 

は、私はそれが私の絵は白になり引き受けるですが、それはそれは黒くなり、私はそれがコードについてではありません、なぜ 見当がつかない(と私はそれが非常に醜い知っています)。実際には、それは黒いイメージです。

答えて

16

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

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

import numpy as np 
img = np.zeros([100,100,3],dtype=np.uint8) 
img.fill(255) # or img[:] = 255 
+0

あなたがそれを言及して以来。 スライスと条件を組み合わせて使用​​するにはどうすればいいですか? たとえば、y <50およびx <50の場合は255に設定し、それ以外の場合は0に設定します。 – Gasare

3

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

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

をそして、あなたの輸入に次の行を追加します。

import numpy as np 

私のマシン上で白画像を与えること。

+0

はどうもありがとうございました。チャームのように働いた – Gasare

+0

あなたは大歓迎です。あなたはここで新しいので、問題を解決するのに最も役立った答えをマークすることを忘れないでください。 [http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work] –

+3

あなたはゼロの配列を作成しています。これはあなたに黒いイメージを与えますか? – Megha

関連する問題