Python模糊图像创建,创建从黑色到白色的精美彩色绘画

时间:2017-10-01 13:44:44

标签: python algorithm python-2.7 image-processing

在Pyhton上我想创建一个从黑色到白色的图片,我写了下面的代码。但我认为我犯的是一个非常小的错误,这就是结果。

enter image description here

我其实想要创建一个类似的图像。你能看出我弄错了吗?

enter image description here

  import numpy as np
from PIL import Image
width = 100
height = 100
img = np.zeros((height, width), dtype=np.uint8)
xx, yy=np.mgrid[:height, :width]
circle = (xx - 50)**2 + (yy- 50)**2
for x in range (img.shape[0]):
    for y in range (img.shape[1]):
        intensity = circle[x][y]
        img[x][y]= intensity
Image.fromarray(img, 'L').show()
Image.fromarray(img, 'L').save ('circlebad.png', 'PNG')

< ----------------------------------编辑---------- ------------------------------>

插入时; intensity = intensity / 512我的问题解决了。最后的代码;

    import numpy as np
    from PIL import Image
    width = 100
    height = 100
    img = np.zeros((height, width), dtype=np.uint8)
    xx, yy=np.mgrid[:height, :width]
    circle = (xx - 50)**2 + (yy- 50)**2
    for x in range (img.shape[0]):
        for y in range (img.shape[1]):
            intensity = circle[x][y]
            intensity = intensity / 512
            img[x][y]= intensity
    Image.fromarray(img, 'L').show()
    Image.fromarray(img, 'L').save ('circlebad.png', 'PNG')

1 个答案:

答案 0 :(得分:3)

正如其他人所说,你在顶部图像中得到输出的原因是因为强度必须在range(256),并且Numpy算法对你的代码的值有效地做% 256制备

这是修复后的代码版本。

import numpy as np
from PIL import Image

width = height = 320
radius = (width - 1) / 2
xx, yy = np.mgrid[:height, :width]

# Compute the raw values
circle = (xx - radius) ** 2 + (yy - radius) ** 2

#Brightness control
maxval = 255
valscale = maxval / (2 * radius ** 2)
circle = (circle * valscale).astype(np.uint8)

img = Image.fromarray(circle, 'L')
img.show()
img.save('circle.png')

输出:circle.png

greyscale circle