我正在尝试更改灰度 PNG 图像的值,然后根据这些更改的值创建图像。
我采取的第一步是使用 python implementation of libpng 。 这样我就可以获得 PNG 的所有像素值的列表。它是灰度图像,因此值从 0 到 100。我使用快速算法来更改值。然后我尝试将其创建为一个新的 PNG 文件。它全部在一行上,所以我使用正则表达式将其格式化为二维数组。
我尝试使用我发现的这个 here
from PIL import Image
import numpy as np
pixels = [[100,0,0],[0,100,0],[0,0,100]]
# Convert the pixels into an array using numpy
array = np.array(pixels)
print(array)
# Use PIL to create an image from the new array of pixels
new_image = Image.fromarray(array, 'L')
new_image.save('testing.png')
但我猜 PIL 使用的格式与 libpng 的格式不同,因此我没有制作看起来像对角线 3 个白色像素的图像,而是在左上角只得到 1 个白色像素。因此,要么我更改从 libpng 获取的值以便 numpy 工作,要么我在 libpng 中找到一些允许我直接更改值并创建新文件的内容。
最佳答案
代码中的错误是您没有为数组设置正确的数据类型。如果您调用array = np.array(pixels, dtype='uint8')
那么你的代码就可以工作了。
关于python - 从二维像素值数组创建灰度图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58546712/