2012-05-05 86 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

相关问题