【问题标题】:numpy.ones results in red, green, blue, and black bars on imagenumpy.ones 在图像上产生红色、绿色、蓝色和黑色条
【发布时间】:2018-09-15 22:24:18
【问题描述】:

我有以下代码:

from PIL import Image
import numpy as np

a = np.ones((512, 256, 3)).astype(int)*255
image = Image.fromarray(a, "RGB")
image.save("test.png", "PNG")

我希望这会产生尺寸为 512x256 的白色图像。 相反,我得到了这个:

由于某种原因,此图像是一系列条形而不是纯色。

我做错了什么?是numpy数组的格式吗?

【问题讨论】:

    标签: python python-3.x image numpy python-imaging-library


    【解决方案1】:

    而不是astype(int) 使用astype(np.uint8) 甚至更好

    a = np.full((512, 256, 3), 255, dtype=np.uint8)
    

    您看到的条纹是 int 值重新解释为uint8s 序列的结果。

    【讨论】:

    • 哦!最后一句话非常有帮助。谢谢!!
    • 终于!我只是无法追踪我的错误,结果发现它是这样奇怪的。
    【解决方案2】:

    请改用Image.new。

    image = Image.new('RGB', (512, 256), color=(255, 255, 255))
    image.save("test.png", "PNG")
    

    【讨论】:

    • 成功了!但是现在我将如何设法更改此图像中的值?
    • @NoahWillCrow 修改 color 元组以根据需要更改颜色。
    • 对不起,不,我的意思是,我怎样才能改变每个像素的值来画一个三角形?比如,我需要什么数据格式才能使用 Image.putdata?
    • @NoahWillCrow 啊,对 PIL 不太熟悉,无法回答,抱歉!
    猜你喜欢
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 2017-05-28
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 2014-08-26
    相关资源
    最近更新 更多