python读取mat文件中的struct问题

 更新时间:2022年07月15日 08:50:09   作者:独孤的大山猫  
这篇文章主要介绍了python读取mat文件中的struct问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。 

相关文章

  • Python进阶篇之字典操作总结

    Python进阶篇之字典操作总结

    字典是Python语言中唯一的映射类型。字典对象是可变的,它是一个容器类型,能存储任意个数的Python对象,其中也可包括其他容器类型。在学习了 Python 基本的字典操作后,通过学习本文的这些进阶操作,让写出的代码更加优雅简洁和pythonic。下面来一起看看吧。
    2016-11-11
  • 使用pytorch进行图像的顺序读取方法

    使用pytorch进行图像的顺序读取方法

    今天小编就为大家分享一篇使用pytorch进行图像的顺序读取方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • 用Python将mysql数据导出成json的方法

    用Python将mysql数据导出成json的方法

    今天小编就为大家分享一篇用Python将mysql数据导出成json的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • Python dataframe如何设置index

    Python dataframe如何设置index

    这篇文章主要介绍了Python dataframe如何设置index,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Python代码块批量添加Tab缩进的方法

    Python代码块批量添加Tab缩进的方法

    今天小编就为大家分享一篇Python代码块批量添加Tab缩进的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Python中的Numpy 矩阵运算

    Python中的Numpy 矩阵运算

    这篇文章介绍Python中的Numpy 矩阵运算,NumPy是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,下面详细内容,需要的朋友可以参考一下
    2021-11-11
  • django实现悲观锁乐观锁的项目实践

    django实现悲观锁乐观锁的项目实践

    在Django中,我们可以通过实现悲观锁和乐观锁来保证数据的安全性,本文就来介绍一下django实现悲观锁乐观锁的项目实践,感兴趣的可以了解一下
    2023-08-08
  • python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解

    python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解

    这篇文章主要介绍了python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • python获取本机所有IP地址的方法

    python获取本机所有IP地址的方法

    这篇文章主要为大家详细介绍了python获取本机所有IP地址的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • 目前最全的python的就业方向

    目前最全的python的就业方向

    Python是一门面向对象的编程语言,编译速度超快,从诞生到现在已经25个年头了。其特点在于灵活运用,因为其拥有大量第三方库,所以开发人员不必重复造轮子,就像搭积木一样,只要擅于利用这些库就可以完成绝大部分工作
    2018-06-06

最新评论