使用 Python
的 PIL
模块,我们可以将数字图像读入整数的数组
,
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
它确实给出了一个数字序列,但是 PIL
如何将彩色图像解释为 3D 数组?
简而言之,我的问题是我想知道如何在不使用任何模块(如 PIL
)的情况下获得彩色图像的数组表示,如何使用 Python 完成这项工作?
最佳答案
嗯,这取决于我要说的图像格式。
对于 .jpg,有允许读取图像的格式的完整描述。 您可以阅读它 here
PIL 所做的正是您最初所做的。但随后它会按照规范读取字节,这使其能够将其转换为人类可读的格式(在本例中为数组)。
对于 JPEG 来说,这可能看起来很复杂,但如果您使用 png(未压缩的版本),一切看起来都会简单得多。 For example this image
如果你打开它,你会看到这样的东西:
您可以在顶部看到与标题相对应的几个信息。
然后您会看到所有这些零,它们是图像黑色像素的数字表示(左上角)。
如果你用 PIL 打开图像,你会得到一个大部分用 0 填充的数组。
如果您想了解更多关于第一个字节的信息,请查看 png specifications第 11.2.2 章。
你会看到一些字节对应于图像的宽度和高度。这就是 PIL 能够创建数组的方式:)。
希望对您有所帮助!
关于python - 读取为整数数组的数字图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14319397/