如何使用PIL合并来自800张图像的像素数据

时间:2018-10-09 06:45:54

标签: python arrays python-imaging-library

我正在遍历约800张图像并提取像素数据,以准备将其合并为1张图像。

此刻,我像这样提取r,g,b值:

img = Image.open(i, 'r')
data = img.getdata()
rgb_data = []

for (r, g, b) in data:
    rgb_data.append((r, g, b))

获取1张图像的rgb值很好。但是,当尝试建立所有800个图像rgb值的值列表时,图像170周围的内存用完了。这是因为每个图像都包含约175,000像素。因此,每个列表都有175,000个值,我正在尝试将它们全部合并在一起(175,000 * 800)。

我已经研究过将每个图像rgb腌制到一个文件中,然后当我有800个文件时,将它们全部加载到一个列表中,但是遇到了同样的问题。

我也尝试了SqlLite,它确实可以工作,但是可能要花几天时间才能运行。在大约3个小时的时间内就可以显示1张图像的rgb值。

因此,我正在寻找一种方法将这些庞大的列表合并为一个列表,并且以某种方式无法将其保存在内存中。

编辑: 为了进一步解释,从理论上讲,目前我将得到800个列表,每个列表包含约175,000个rgb值。我最终想要的是所有这些值中的1个列表,然后我打算创建一个新图像,如下所示:

new_img = Image.new("RGB", size)
new_img.putdata(huge_list_of_all_values)

0 个答案:

没有答案