【问题标题】:How to create a white image in Python?如何在 Python 中创建白色图像?
【发布时间】:2012-05-14 23:55:18
【问题描述】:

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

我会假设它会使我的图片变白,但它会变黑,我不知道为什么 这与代码无关(我知道它看起来很丑)。它只是一个事实,它是一个黑色的图像。

【问题讨论】:

    标签: python numpy scipy


    【解决方案1】:

    标题太宽泛,首先出现在 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')
    

    【讨论】:

      【解决方案2】:

      就这个问题的标题而言,我确实需要一个白色图像以及一个枕头输入。而且这里介绍的解决方案对我不起作用。

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

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

      【讨论】:

        【解决方案3】:
        # 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】:

          简单! 检查以下代码:

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

          255 是填充字节的颜色。

          1000,1000是图片的大小。

          3 是图像的颜色通道。

          unit8是类型

          祝你好运

          【讨论】:

            【解决方案5】:

            图像中的每种颜色都由一个字节表示。所以要创建一个图像数组,你应该将它的 dtype 设置为 uint8。

            而且,你不需要 for-loop 将每个元素设置为 255,你可以使用 fill() 方法或切片索引:

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

            【讨论】:

            【解决方案6】:

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

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

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

            import numpy as np
            

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

            【讨论】:

            • 非常感谢。像魅力一样工作
            • 不客气。由于您是新来的,请不要忘记将最有助于解决问题的答案标记为已接受。另见 [meta.stackexchange.com/questions/5234/…
            • 您正在创建一个零数组。这不应该给您一个黑色图像吗?
            • 这实际上给出了一个黑色图像
            • 我的黑色图像
            猜你喜欢
            • 2018-08-19
            • 1970-01-01
            • 1970-01-01
            • 2019-12-16
            • 1970-01-01
            • 1970-01-01
            • 2013-08-30
            • 1970-01-01
            • 2021-04-12
            相关资源
            最近更新 更多