使用Python
的{{1}}模块,我们可以将数字图像读取为PIL
个整数,
array
我想知道from PIL import Image
from numpy import array
img = Image.open('x.jpg')
im = array(img) # im is the array representation of x.jpg
如何将图片解释为PIL
?首先我尝试了这个
array
它确实给出了一系列数字,但od -tu1 x.jpg
如何将彩色图像解释为3D数组呢?
简而言之,我的问题是我想知道如何在不使用任何模块PIL
的情况下获得彩色图像的数组表示,如何使用Python完成工作?
答案 0 :(得分:3)
嗯,这取决于我想说的图像格式。
对于.jpg,可以完整地描述允许读取图像的格式。 您可以阅读 here
PIL的作用正是您最初所做的。但随后它会读取规范之后的字节,这使得它可以将其转换为人类可读的格式(在本例中为数组)。
JPEG可能看起来很复杂,但是如果你采用png(没有压缩的版本),一切看起来都会更简单。 For example this image
如果你打开它,你会看到类似的东西:
您可以在顶部看到与标题对应的多个信息。
然后你会看到所有那些零,这是图像黑色像素的数字表示(左上角)。
如果使用PIL打开图像,您将获得一个大多数填充为0的数组。
如果您想了解有关第一个字节的更多信息,请查看png specifications第11.2.2章。
您将看到一些字节对应于图像的宽度和高度。这就是PIL能够创建数组:)。
希望这有帮助!
答案 1 :(得分:1)
取决于颜色模式。在PIL中,图像存储为整数列表,所有通道按每个像素交错。
为了说明这一点: