gpt4 book ai didi

python - 在python中读取一个pgm文件

转载 作者:太空狗 更新时间:2023-10-30 01:06:41 24 4
gpt4 key购买 nike

我有兴趣将 python 中的 pgm 文件作为数字文件/矩阵读取

现在我用

打开文件
f = open('/home/matthew/NCM/mdb001.pgm', 'rb')

当我阅读第一行时,它看起来符合预期

r.readline()

产生

'P5\n'

下一行就可以了

'1024 1024\n'

和下一个

'255\n'

但随后我收到了一系列乱码。它看起来像一些十六进制值与其他东西混合在一起。

我不想以图像图片的形式查看文件,我只想在this中看到它格式。

最佳答案

如您所示阅读标题后,您将获得宽度 (1024)、高度(下一个 1024)和深度 (255)。要获取像素数据,最简单的方法是逐字节读取它们:

def read_pgm(pgmf):
"""Return a raster of integers from a PGM as a list of lists."""
assert pgmf.readline() == 'P5\n'
(width, height) = [int(i) for i in pgmf.readline().split()]
depth = int(pgmf.readline())
assert depth <= 255

raster = []
for y in range(height):
row = []
for y in range(width):
row.append(ord(pgmf.read(1)))
raster.append(row)
return raster

此代码仅适用于 8 位深度图像,这就是存在 assert 语句的原因。

PGM 文件在一行中包含标题信息是合法的,如下所示:

P5 1024 1024 15

如果确实遇到这样的文件,read_pgm 会大声失败;处理此类情况的代码留给读者作为练习。

关于python - 在python中读取一个pgm文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35723865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com