-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmat_parser.py
32 lines (29 loc) · 902 Bytes
/
mat_parser.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# -*- coding: utf-8 -*-
import json
import scipy.io
import numpy as np
class MatParser:
def trans(self, item):
if isinstance(item, np.ndarray):
item = item.tolist()
if isinstance(item, dict):
res = {}
for key in item.keys():
res[key] = self.trans(item[key])
elif isinstance(item, list):
res = []
for i in range(len(item)):
res.append(self.trans(item[i]))
elif isinstance(item, bytes):
res = item.decode(encoding="utf-8", errors="ignore")
else:
res = item
return res
def parse(self, filename):
data = scipy.io.loadmat(filename)
data = self.trans(data)
return data
if __name__ == "__main__":
mp = MatParser()
m = mp.parse("./300W_LP/AFW/AFW_2060241469_1_2.mat")
print(json.dumps(m, indent=2))