網(wǎng)站首頁 編程語言 正文
python讀取mat文件中的struct
All devils are in the details,做個(gè)筆記。
mat文件結(jié)構(gòu)如下
ground_truth_data 是1x1的struct(結(jié)構(gòu)體),包含2個(gè)字段,一個(gè)是list,一個(gè)是imgszie.如圖1所示
圖1
list是一個(gè)352x1的cell,點(diǎn)開后如圖2,可以看到list中的每一個(gè)cell又由1x1的strcuct組成.
圖2
點(diǎn)開1x1的struct如圖3:
圖3?
如果我現(xiàn)在想把這352個(gè)1x1的struct值(包括imgname和bbox)都用python提出來然后以txt的格式存儲(chǔ),應(yīng)該怎么做?
經(jīng)過查找資料,總結(jié)如下
1、我使用scipy.io模塊加載時(shí),pycharm控制臺(tái)報(bào)錯(cuò)如下:
這是因?yàn)閟cipy.io只能支持matlab版本小于v7.3版本的mat文件。
換句話說就是,如果你的matlab版本比較舊,保存的mat格式為-v7.3及其以前的版本,可以用scipy.io讀取. 如果是比較新的matlab保存的mat文件,就只能用h5py模塊載入了,并且它支持大文件的存儲(chǔ)和讀取.
解決辦法
改用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) #執(zhí)行完這一行,輸出的是(1,352) ,這里和python中numpy數(shù)組的shape返回的不一
#樣,這里第一個(gè)值表示的列,第二個(gè)值表示的是行
for i in range(test.shape[1]): #test.shape[1]的值是352
for k in data[(test[0][i])].values():
print(k[:])
如果有字符,記得用chr()函數(shù)轉(zhuǎn)成字符后顯示.
python讀取mat文件報(bào)錯(cuò)
在用python讀取mat文件時(shí)報(bào)了以下錯(cuò)誤:OSError: Unable to create file
發(fā)現(xiàn)是自己mat文件格式的問題,原來直接在matlab中右鍵另存cell文件,但這種文件python打不開,需要用save函數(shù)保存才行
eg:
.save('Gaitdata.mat', 'originalData', '-v7.3') % v7.3 so that it is readable by h5py
原文鏈接:https://blog.csdn.net/xiqi4145/article/details/89318112
相關(guān)推薦
- 2022-05-10 antd的timePicker.RangePicker設(shè)置結(jié)束時(shí)間不可早于開始時(shí)間
- 2022-09-15 c++中的字節(jié)序與符號(hào)位的問題_C 語言
- 2023-10-17 el-table-column 表單table的后端返回時(shí)間戳的轉(zhuǎn)換
- 2022-04-30 DataGridView自定義單元格表示值、Error圖標(biāo)顯示的方法介紹_C#教程
- 2023-02-10 android?原生安全音量配置邏輯設(shè)計(jì)詳解_Android
- 2022-02-28 npm install安裝報(bào)錯(cuò) gyp info it worked if it ends with
- 2022-10-04 python?numpy庫中數(shù)組遍歷的方法_python
- 2023-01-07 一篇文章徹底弄懂Python中的if?__name__?==?__main___python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支