Python 读取 .mat 文件(数据可视化)

 此处为yale人脸数据的读取,可视化

import numpy as np
import matplotlib.pyplot as plt
from scipy import io
import cv2 as cv

#像numpy,matplotlib,scipy,cv2这些包。直接下一个Anaconda就可以
#Anaconda里面各种包都有,如果你是新手多百度看看什么是包,这些包有什么作用
#遇到不会多百度

x=io.loadmat('C://Users//dell//Desktop//Maching_Learning//YALE人脸数据集可视化//.idea//Yale_32x32.mat')
#载入YALE32mat文件的方法,得到的x是一个字典,可以print一下他的shape看一下里面的属性
data=[]
print(x['fea'].shape)
#数据都存在了fea这个键值里面,print出来发现是165*1024说明有165张
#图片每张图片都有1024个特征也就是1024个像素点

num=x['fea'].shape[0]
#得到总共样本的个数165张图片

#print(x['fea'].shape[0])

for i in range(num):
    img=np.array(1024)#先创建一个一行1024列的数组
    img=x['fea'][i]#存放每张图片数据
    img.shape=32,32#把这1x1024的数组reshape成32x32的矩阵
    img=img.T#矩阵转置
    data.append(img)#把处理过大小的图片存到data列表里面

data=np.array(data)#把列表转成数组矩阵型

out=[0]*15       #我们想要搞出个15行11列的一整张图先处理行上

for i in range(15):  #对每一行进行遍历
   out[i]=data[i*11]  #换行
   for j in range(10):  #对每一列进行遍历
       out[i]=np.hstack((out[i],data[i*11+j+1]))#将每一次的图片合在一起,np.hstack是行方向的合并矩阵

c=out[0]     #上面得到了15个一行11列矩阵现在要把这15行都合在一起,np.vstack讲就是列方向上合并
for i in range(14):
    c=np.vstack((c,out[i+1]))
print(c.shape)

cv.imshow("out",c)
cv.waitKey(0)

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值