首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PIL将png像素导入为单个值,而不是3个值向量。

PIL将png像素导入为单个值,而不是3个值向量。
EN

Stack Overflow用户
提问于 2014-11-23 20:20:47
回答 2查看 3.3K关注 0票数 2

我有一堆地图文件,我已经下载了从谷歌地图的png格式,我想转换成一个更大的图像。当我导入一个像素时,我看到像素是一个0..256范围内的单个数字,而不是三个值列表。这里发生了什么事?

我在用

代码语言:javascript
运行
复制
from PIL import Image

print open('b1.png').load()[0,0]

我得到153而不是r,g,b

我的图像文件是

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-23 23:32:51

这样的结果(在[0,0]中值153 )的原因是图像模式被设置为P (8位像素,使用调色板映射到任何其他模式)。如果您想设置不同的模式(例如RGB),您可以在调用load()方法之前进行设置。

下面是如何做到这一点的一个示例:

代码语言:javascript
运行
复制
from PIL import Image
file_data = Image.open('b1.png')
file_data = file_data.convert('RGB') # conversion to RGB
data = file_data.load()
print data[0,0]

打印的结果是

代码语言:javascript
运行
复制
(240, 237, 229)

有关图像模式的更多信息,请访问文献资料

票数 5
EN

Stack Overflow用户

发布于 2014-11-23 23:29:34

您的图像在mode=P中。它在调色板中定义了它的颜色。

代码语言:javascript
运行
复制
>>> Image.open('b1.png')
<PIL.PngImagePlugin.PngImageFile image mode=P size=640x640 at 0x101856B48>

你想要一个RGB值。第一次转换为RGB:

代码语言:javascript
运行
复制
>>> im = Image.open('b1.png')
>>> im = im.convert('RGB')
>>> im.getpixel((1,1))
(240, 237, 229)

来自文档:http://pillow.readthedocs.org/en/latest/handbook/concepts.html?highlight=mode

P(8位像素,使用调色板映射到任何其他模式) ..。 RGB (3x8位像素,真颜色)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27093835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档