如何在Python中读取pgmp2图像

2024-04-19 12:32:51 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我是在AI的大学小组里执行任务的。我有一个数据集,它有许多PGM P2(ASCII)格式的面。在开始神经网络处理之前,我需要从图像中提取像素数组,但是我找不到在Python中读取这些图像的方法。在

我已经尝试过PIL,但它不适用于PGM P2。在

我能用Python做这个吗? 任何帮助都将不胜感激。在


Tags: 数据方法图像pil格式ascii小组神经网络
1条回答
网友
1楼 · 发布于 2024-04-19 12:32:51

我知道现在回答有点晚了,但我遇到了同样的问题,我想把我的解决方案贴出来可能会有用。似乎不存在在Python上读取基于ASCII的PGM(P2)的库。在

这是我的函数,它接受文件名并返回一个元组:(1)包含数据的1xn numpy数组,(2)包含长度和宽度的元组,(3)灰色阴影的数量。在

import numpy as np
import matplotlib.pyplot as plt

def readpgm(name):
    with open(name) as f:
        lines = f.readlines()

    # Ignores commented lines
    for l in list(lines):
        if l[0] == '#':
            lines.remove(l)

    # Makes sure it is ASCII format (P2)
    assert lines[0].strip() == 'P2' 

    # Converts data to a list of integers
    data = []
    for line in lines[1:]:
        data.extend([int(c) for c in line.split()])

    return (np.array(data[3:]),(data[1],data[0]),data[2])

data = readpgm('/location/of/file.pgm')

plt.imshow(np.reshape(data[0],data[1])) # Usage example

相关问题 更多 >