如何将.mat文件中的图像像素值读取为Python列表?
将MATLAB .mat文件中的像素数组转为Python列表
没问题,这事儿其实挺简单的——numpy数组本身就自带了转Python列表的方法,直接用就能搞定你的需求。
先给你完整的代码示例,你可以直接套用:
from scipy.io import loadmat # 加载目标.mat文件 annots = loadmat('C://Users//user//Downloads//OCR//dataset//Icdar.Train.Robust.all.mat') # 取出你需要的numpy数组集合(就是你之前打印的annots['e'][0]) image_arrays = annots['e'][0] # 遍历每个numpy数组,用tolist()转成Python列表,存入新列表 pixel_value_lists = [img_array.tolist() for img_array in image_arrays] # 测试打印第一个结果看看结构 print(pixel_value_lists[0])
关键细节说明:
tolist()方法:这是numpy数组的内置方法,能完美保留原数组的维度结构——比如你的图像是二维像素数组,转完就是嵌套的Python列表(列表里套列表),完全符合常规的像素数据结构。- 特殊情况处理:如果
annots['e'][0]本身就是单个二维像素数组(而不是多个数组的集合),那你不用循环,直接写pixel_list = annots['e'][0].tolist()就能得到对应的Python列表。 - 类型自动转换:原数组里的数值类型(比如uint8)会自动转换成Python原生的int/float类型,不用额外处理。
内容的提问来源于stack exchange,提问作者Deveshi
相关产品推荐
相关产品推荐

