视讯!python读取mat文件中的struct问题
目录
python读取mat文件中的structmat文件结构如下经过查找资料,总结如下解决办法python读取mat文件报错python读取mat文件中的struct
All devils are in the details,做个笔记。
mat文件结构如下
ground_truth_data 是1x1的struct(结构体),包含2个字段,一个是list,一个是imgszie.如图1所示
图1
(相关资料图)
list是一个352x1的cell,点开后如图2,可以看到list中的每一个cell又由1x1的strcuct组成.
图2
点开1x1的struct如图3:
图3
如果我现在想把这352个1x1的struct值(包括imgname和bbox)都用python提出来然后以txt的格式存储,应该怎么做?
经过查找资料,总结如下
1、我使用scipy.io模块加载时,pycharm控制台报错如下:
这是因为scipy.io只能支持matlab版本小于v7.3版本的mat文件。
换句话说就是,如果你的matlab版本比较旧,保存的mat格式为-v7.3及其以前的版本,可以用scipy.io读取. 如果是比较新的matlab保存的mat文件,就只能用h5py模块载入了,并且它支持大文件的存储和读取.
解决办法
改用h5py模块载入mat并读取struct值,代码如下
import h5py data = h5py.File("D:\\Build_my_net\\tensorflow-vgg-master\\tensorflow-vgg-master\help_others\\train_ground_truth_data.mat") test = data["ground_truth_data/list"] print(test.shape) #执行完这一行,输出的是(1,352) ,这里和python中numpy数组的shape返回的不一 #样,这里第一个值表示的列,第二个值表示的是行 for i in range(test.shape[1]): #test.shape[1]的值是352 for k in data[(test[0][i])].values(): print(k[:])
如果有字符,记得用chr()函数转成字符后显示.
python读取mat文件报错
在用python读取mat文件时报了以下错误:OSError: Unable to create file
发现是自己mat文件格式的问题,原来直接在matlab中右键另存cell文件,但这种文件python打不开,需要用save函数保存才行
eg:
.save("Gaitdata.mat", "originalData", "-v7.3") % v7.3 so that it is readable by h5py
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
X 关闭
X 关闭
- 1转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 2充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 3好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 4名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 5亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战
- 6京东绿色建材线上平台上线 新增用户70%来自下沉市场
- 7网红淘品牌“七格格”chuu在北京又开一家店 潮人新宠chuu能红多久
- 8市场竞争加剧,有车企因经营不善出现破产、退网、退市
- 9北京市市场监管局为企业纾困减负保护经济韧性
- 10市场监管总局发布限制商品过度包装标准和第1号修改单