2012-05-05 3 views
8

Po odrabianiu lekcji natknąłem się na problem dotyczący Pythona i manipulacji obrazem. Muszę powiedzieć, że użycie Image lib nie jest opcją. Więc tutaj jestJak utworzyć biały obraz w Pythonie?

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) 

Przypuszczam, to sprawia, że ​​mój obraz biały, ale okazuje to czarny, a ja nie mam pojęcia, dlaczego nie chodzi o kodzie (i wiem, że wygląda bardzo brzydki). Chodzi tylko o to, że jest to czarny obraz.

Odpowiedz

16

Każdy kolor na obrazku jest reprezentowany przez jeden bajt. Aby utworzyć tablicę obrazów, powinieneś ustawić jej typ dtype na uint8.

I nie trzeba do pętli, aby ustawić co elementy do 255, można użyć do syta() metoda lub plaster index:

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

Ok, ponieważ wspomniałeś o tym. Jak korzystać z krojenia w połączeniu z warunkami. Na przykład, jeśli y <50 i x <50, chcę ustawić je na 255 w przeciwnym razie na 0. – Gasare

3

Podczas tworzenia pliku imga należy ustawić typ jednostki. Konkretnie, zmień następującą linię kodu:

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

I dodać następujące do importu:

import numpy as np 

który daje biały obraz na moim komputerze.

+0

Dziękuję bardzo. Pracowałem jak wdzięk – Gasare

+0

Nie ma za co. Ponieważ jesteś tu nowy, nie zapomnij zaznaczyć odpowiedzi, która została przyjęta, co pomogło w rozwiązaniu problemu. Zobacz także [http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work] –

+3

Tworzysz tablicę zer. Czy to nie daje czarnego obrazu? – Megha