Глядя на файл меньшего размера:
In [33]: from scipy import io
In [34]: io.loadmat('../Downloads/all_img_names.mat')
загрузка без назначения дает мне распечатку содержимого файла (я не рекомендую это с большим файлом изображения):
Out[34]:
{'__header__': b'MATLAB 5.0 MAT-file, Platform: GLNXA64, Created on: Thu Oct 19 14:20:48 2017',
'__version__': '1.0',
'__globals__': [],
'all_img_names': array([[array(['airplanecabin1.jpg'], dtype='<U18'),
array(['scenes'], dtype='<U6')],
[array(['airplanecabin3.jpg'], dtype='<U18'),
array(['scenes'], dtype='<U6')],
[array(['airplanecabin5.jpg'], dtype='<U18'),
array(['scenes'], dtype='<U6')],
...,
[array(['yogastudio2.jpg'], dtype='<U15'),
array(['scenes'], dtype='<U6')],
[array(['yogastudio3.jpg'], dtype='<U15'),
array(['scenes'], dtype='<U6')],
[array(['yogastudio4.jpg'], dtype='<U15'),
array(['scenes'], dtype='<U6')]], dtype=object)}
Особо глядя на клавишу all_img_names
. Это соответствует переменной с таким именем в исходной рабочей области MATLAB. Обратите внимание, что это объект dtype. Как и ячейка, она может содержать другие массивы:
In [36]: io.loadmat('../Downloads/all_img_names.mat')['all_img_names'].shape
Out[36]: (4916, 2)
И, глядя на первую «строку» этого массива, это тоже object
dtype, с двумя строковыми массивами - именем файла и некоторой меткой категории:
In [37]: io.loadmat('../Downloads/all_img_names.mat')['all_img_names'][0]
Out[37]:
array([array(['airplanecabin1.jpg'], dtype='<U18'),
array(['scenes'], dtype='<U6')], dtype=object)
Надеюсь, это даст вам представление о том, как исследовать содержимое mat['all_imgs']
.
mat['all_imgs'][0,0]
может быть двумерным массивом. Но если это какая-то кодировка изображения, вам, возможно, придется открыть ее с помощью cv2
. Но без загрузки этого большого файла я не смогу помочь.