python读写.mat文件

介绍

这里的.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)

rawpy

参考git repo : rawpy

你可能感兴趣的:(python读写.mat文件)