raw原始数据为12位,4095max。
转化为0-1浮点数,raw/(2**16)
生成代码段:
如果不是raw数据,进行更改即可,注意imwrite默认保存的数值是0-255,所以0-1的浮点数如果要用imwrite保存,那么一定要先进行一次数据类型转换,或者转换成0-255都可。
import struct
import numpy as np
import cv2
path_M = ('C:/Users/EDY/Desktop/h5_pro/3/marg_raw_withexp.raw')
size = 1920 * 1080
f1 = open(path_M, 'rb')
raw_data = []
for i in range(size):
data = f1.read(2)
cut = struct.unpack('H', data)[0]
raw_data.append(cut)
raw = np.array(raw_data).reshape((1080, 1920))
raw = raw / (2**16)
print(raw)
raw = np.clip(raw, 0, 1)
#raw = raw *(2**16)
#raw = raw.astype(np.uint16)
#print(raw)
raw = raw.astype(np.float32)
cv2.imwrite('34.hdr',raw)
验证代码:
import cv2
a = cv2.imread('./34.hdr',-1)
print(a.shape)
print(a)