2012-05-05 136 views
8

在做功課,我碰到一個問題就迷迷糊糊Python和圖像處理。我必須說,使用Image 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

圖像中的每種顏色都由一個字節表示。所以要創建一個圖像數組,你應該將其設置爲uint8。

而且,你不需要爲環設置每一個元素255,你可以使用fill()方法或切片指數:

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

相關問題