【问题标题】:Create an image on python with numpy使用 numpy 在 python 上创建图像
【发布时间】:2021-07-24 14:22:51
【问题描述】:

我正在尝试在 python 3.7(在 Thonny)上创建图像。我想用灰度值设置一个矩阵,所以 0 是黑色,255 是白色。该矩阵将代表我要创建的图像的像素。基本上,我想基于矩阵创建黑白图像。 这是我的代码:

from PIL import Image
import numpy as np


largeur = 2
hauteur = 2
couleur = 'L'


im = Image.new(couleur, (largeur, hauteur))
matrice = np.array([[0,255],[255,0]])
for x in range(largeur):
    for y in range(hauteur):
        a = int()
        a = matrice[x,y]
        print(a)
        im.putpixel((x, y), (a))    # Composante R en fonction de la hauteur


im.save('Degrade.jpg')
im.show()

当我运行程序时,它说 a 是问题:“颜色必须是 int 或元组”。

感谢您的帮助,祝您有愉快的一天!

我试过 Image.fromarray :

from PIL import Image
import numpy as np


largeur = 50
hauteur = 8
couleur = 'L'


#im = Image.new(couleur, (largeur, hauteur))
matrice = np.array([[255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255],
[255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255],
[255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255],
[255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255],
[255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255],
[255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255],
[255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255],
[255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255]])
#for x in range(largeur):
    #for y in range(hauteur):
        #a = int()
        #a = matrice[x,y]
        #print(a)
        #im.putpixel((x, y), (255)) # Composante R en fonction de la hauteur

im = Image.fromarray(matrice, mode=couleur)
im.save('Degrade.jpg')
im.show()

有了这个,我应该有一个只有白色像素的 50 x 8 像素的图像,但我得到了白色和黑色像素(看下面的图片),我知道我们看不到太多抱歉 :) 也非常感谢为您解答:

【问题讨论】:

    标签: python image numpy matrix python-imaging-library


    【解决方案1】:

    你可以尝试使用Image.fromarray:

    Image.fromarray(matrice, mode=couleur)
    

    【讨论】:

    • 非常感谢您的回答,我已经尝试过这个解决方案,但出现了另一个问题。
    【解决方案2】:

    对不起,我的长期回答。问题在于正在使用的类型并将其转换为图像。如果对图像使用单字节类型,则矩阵类型也必须是单字节。示例:

    from PIL import Image
    import numpy as np
    
    size_x = 50
    size_y = 8
    m = "L"
    
    matrix = np.array([[255] * 50 for _ in range(size_y)], dtype="uint8")
    im = Image.fromarray(matrix, mode=m)
    
    im.save('Degrade.jpg')
    im.show()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-07
      • 2021-08-30
      • 2011-04-29
      • 2017-12-28
      • 2021-09-25
      • 2013-06-10
      • 2018-08-19
      相关资源
      最近更新 更多