介绍
这里的.mat文件指的是matlab的save生成的数据文件,其以.mat结尾。
一般而言,mat文件在读取到python中时,都会以字典的形式载入。
经常会用到3个包:
import scipy.io as scio # 低版本mat文件
import h5py # >7.3的高版本mat文件
import rawpy
本文包括以下内容:
- 元信息读取
- 单张图片读取
- 批量读取
- 单个文件写入
元信息读取
meta_path='../dataset/gt_kodak_c.mat'
data = scio.loadmat(meta_path) # 读取mat文件到data中
gt = data['label_val'] # 当做字典处理
keys = data.keys() # 可以获取到字典的key
单张raw图读取,并转换成3通道显示
raw_path='../dataset/gt_kodak_c.mat'
data=h5py.File(raw_path)
print(data.keys())
data1 = data['x'][:1000,:1000]
data_temp = None
data1 = (data1*255).astype(np.uint8)
li = [cv2.COLOR_BayerBG2BGR, cv2.COLOR_BayerGB2BGR, cv2.COLOR_BayerRG2BGR, cv2.COLOR_BayerGR2BGR, cv2.COLOR_BayerBG2RGB, cv2.COLOR_BayerGB2RGB, cv2.COLOR_BayerRG2RGB, cv2.COLOR_BayerGR2RGB]
for i in li:
data_temp = cv2.cvtColor(data1, i, data_temp)
cv2.imshow("asdf",data_temp)
cv2.waitKey(0)
批量读取raw图并显示
for filename in Path(".").rglob("*.MAT"):
raw_path=str(filename)
data=h5py.File(raw_path)
data1 = data['x'][500:1000,500:1000]
data_temp = None
data1 = (data1*255).astype(np.uint8)
# test different model
# li = [cv2.COLOR_BayerBG2BGR, cv2.COLOR_BayerGB2BGR, cv2.COLOR_BayerRG2BGR, cv2.COLOR_BayerGR2BGR, cv2.COLOR_BayerBG2RGB, cv2.COLOR_BayerGB2RGB, cv2.COLOR_BayerRG2RGB, cv2.COLOR_BayerGR2RGB]
# for i in li:
# data_temp = cv2.cvtColor(data1, i, data_temp)
# cv2.imshow("asdf",data_temp)
# cv2.waitKey(0)
data_temp = cv2.cvtColor(data1, cv2.COLOR_BayerBG2RGB)
cv2.imshow(raw_path,data_temp)
cv2.waitKey(0)
单个文件写入
GT_path = "aaaa.mat"
scio.savemat(GT_path, {'x':gt},appendmat=False)