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)

标签: none

添加新评论