python解析pgm地图
1、地图二进制分析
file = open("ditu.pgm",mode="rb")
data = file.read()
print(data[:15])
打开地图输出前15个字节,输出为
b'P6\n747\n596\n255\n'
分别代表,p6地图格式,757为宽,596为高,255为色彩饱和度为0-255
print(len(data))
输出文件的总长度为1335651个字节
1335651
1335651 - 15 = 747 X 596 X 3
刚好是3通道的747 * 596的像素点
2、代码
转换为numpy列表,shape必须是(height, weight, 3),opencv的imwrite才可以导出
整体代码
import numpy as np
import cv2
file = open("ditu.pgm",mode="rb")
data = file.read()
data = data[15:]
weight = 747
height = 596
data = map(lambda x:int(x),data)
data = list(data)
data = np.array(data)
data = data.reshape((height, weight, 3))
data = data[:,:,[2, 1, 0]] # rgb的通道顺序转换
# data = data/255
cv2.imwrite("1.png",data)