【发布时间】:2021-10-09 01:32:17
【问题描述】:
我有一个 1280x720 大小的图像的 RGB 值数据,列表如下所示:
[[102, 107, 111],
[101, 106, 110],
[100, 105, 109],
[100, 105, 109],
[101, 106, 109],
[103, 108, 111],
[105, 110, 113],
...]
我从Image.getdata() 获得了这些数据,并出于不同的原因将其转换为二维列表(此列表称为all_data)。但是,当我尝试使用下面的代码将大小设置为我想要的大小时,我得到了一个TypeError: too many data entries。
from PIL import Image
import numpy as np
image_out = Image.new(mode = "RGB", size = (1280, 720))
image_out.putdata(all_data)
image_out.show()
这可能不是正确的做法,所以如果有人知道我应该去哪里,请告诉我。正如预期的那样,我有 1280*720 像素的数据,应该按照Image.getdata() 放入它们的顺序(据我假设,这是标准的从左到右和从上到下的渲染)。
【问题讨论】:
-
你能得到all_data的长度吗?如果 len(all_data) 的输出不是 1280*720,那么我们知道创建数组有问题。如果是,那么图像的填充方式存在问题。
-
@shadow-kris 是的,我可以确认 len(all_data) 是 921600(或 1280*720)。
-
这很有趣,我得到一个完全不同的错误:
TypeError: color must be int or tuple。 -
@MarkRansom 您使用的是什么列表,因为该错误不应该与所有 int 数据一起出现?
-
PythonMan1029:请提供minimal reproducible example(即小得多的图像并将所有数据放入您的问题中)。
标签: python image image-processing python-imaging-library rgb