日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

python讀取mat文件中的struct問題_python

作者:獨(dú)孤的大山貓 ? 更新時(shí)間: 2022-09-07 編程語言

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

欄目分類
最近更新