답변하기에 조금 늦었지만 같은 문제가 발생하여 솔루션을 게시하는 것이 유용 할 수 있다고 생각했습니다. 파이썬에서 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('./faces/an2i/an2i_right_sad_sunglasses.pgm')
plt.imshow(np.reshape(data[0],data[1])) # Usage example
의
가능한 복제 [일반 PGM 형식 PIL 이미지 필터를 작성하는 방법?] (https://stackoverflow.com/questions/4270700/how-to-write-pil-image-filter-for-plain -pgm-format) – Reti43