如何在Python中创建白色图像?

时间:2012-05-05 20:31:35

标签: python numpy scipy

做完作业后,我偶然发现了一个关于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)

我认为它会使我的照片变白,但它变黑了,我不明白为什么 这不是关于代码(我知道它看起来非常难看)。事实上,这是一个黑色的图像。

6 个答案:

答案 0 :(得分:32)

图像中的每种颜色都用一个字节表示。因此,要创建图像数组,应将其dtype设置为uint8。

并且,您不需要for循环将每个元素设置为255,您可以使用fill()方法或切片索引:

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

答案 1 :(得分:4)

创建imga时,需要设置单位类型。具体来说,更改以下代码行:

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

并且,将以下内容添加到您的导入中:

import numpy as np

这会在我的机器上显示白色图像。

答案 2 :(得分:0)

容易! 检查以下代码:

whiteFrame = 255 * np.ones((1000,1000,3), np.uint8)

255是填充字节的颜色。

10001000是图片的大小。

3是图像的颜色通道。

unit8是类型

祝你好运

答案 3 :(得分:0)

# Create an array with a required colours
# The colours are given in BGR [B, G, R]
# The array is created with values of ones, the size is (H, W, Channels)
# The format of the array is uint8
# This array needs to be converted to an image of type uint8

selectedColor = [75, 19, 77] * np.ones((640, 480, 3), np.uint8)
imgSelectedColor = np.uint8(np.absolute(selectedColor))

答案 4 :(得分:0)

就这个问题的标题而言,我确实需要一个白色图像和一个枕头输入。此处提供的解决方案对我不起作用。

因此这里有一种不同的方式来生成用于其他目的的白色图像:

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

可以在 Image.new() 函数的第二个和第三个参数中更改大小和颜色。

如果你想在这张图片上写一些东西或保存它,这就是示例代码。

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')

答案 5 :(得分:0)

标题太宽泛,会首先出现在 Google 上。我需要一个白色图像并使用 PIL 和 numpy。 PILlow 实际上适用于 numpy

import numpy as np
from PIL import Image
img = np.zeros([100,100,3],dtype=np.uint8)
img.fill(255) # numpy array!
im = Image.fromarray(img) #convert numpy array to image
im.save('whh.jpg')