python - 将 RGB 转换为正确尺寸的图像的问题
问题描述
我在一个看起来像这样的列表中有一个大小为 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()
并将其转换为 2d 列表(此列表称为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()
放入它们的顺序(据我假设,这是一个标准的从左到右和从上到下的渲染)。
解决方案
因此,图像库要求 rgb 数据是元组,而不是列表。我无法找到文档中明确提到的这一点,但通过我自己的测试对其进行了验证。所有文档示例也使用整数或元组(https://hhsprings.bitbucket.io/docs/programming/examples/python/PIL/Image__class_Image.html#id1)
从列表列表到元组列表的转换可以通过以下行完成:
tuples = [tuple(x) for x in all_data]
在上下文中:
from PIL import Image
import numpy as np
image_out = Image.new(mode = "RGB", size = (1280, 720))
tuples = [tuple(x) for x in all_data]
image_out.putdata(tuples)
image_out.show()
推荐阅读
- python - 如何将 pytorch 模型转换为核心 ml 模型?
- java - 谓词问题“无效路径:'generatedAlias1.geometrie'”条件生成器
- python - csv文件中存在的重定向链接的解决方案
- javascript - 构造函数映射需要 Next js 中的“新”
- r - R根据另一列中的值将规则应用于一列中的时间戳以促进过滤
- javascript - 在AngularJS中,检查这3个$http.post后做3个$http.pos是成功的,否则没有post
- qt - 从图片中遮罩,在光标后面裁剪图像
- linux - 将自签名证书插入或更新到 Docker 容器中
- java - 声明新的枚举类型 php
- influxdb - 有没有办法自定义 Kapacitor 警报的阈值?