将文件夹中所有三维图像保存在四维数组中,并保存为.mat格式

我们在读取数据时,时常会遇到.mat格式的图片,这时候我们需要打开可视化。但是我们也在提交测试时,也会需要提交.mat文件。下面我们就将得到的测试图片保存在四维数组中,并生成.mat的字典格式。

import numpy as np
import os.path
import shutil
from scipy.io.matlab.mio import savemat, loadmat
import matplotlib.pyplot as plt
from PIL import Image

paths = "res_dir/"
filelist = os.listdir(paths)  # 打开对应的文件夹
total_num = len(filelist)  #得到文件夹中图像的个数
results = np.empty((30, 1024, 2048, 3))  #生成一个空的数组

for filename in os.listdir(paths):
    i = 1
    restored = np.array(Image.open(paths+filename))   #读取图片
    results[i][ :, :, :] = restored
    i = i + 1

print(results.shape)

在res_dir文件中所有图片都保存在results数组中了,下面我们将数组保存为.mat

# create results directory
res_dir = 'res_dir'
os.makedirs(os.path.join(work_dir, res_dir), exist_ok=True)

res_fn = os.path.join(work_dir, res_dir, 'results.mat')
res_key = 'results'     # Note: do not change this key,the evaluation code will look for this key
savemat(res_fn, {res_key: results})

 上面就将图片所有信息保存在results.mat文件中啦!

下面提供一个图像保存在数组的详细例子。

import numpy
import os
from PIL import Image   #导入Image模块
from pylab import *     #导入savetxt模块
 
def get_imlist(path):   #此函数读取特定文件夹下的jpg格式图像,返回图片所在路径的列表
 
    return [os.path.join(path,f) for f in os.listdir(path) if f.endswith('.jpg')]
 
c=get_imlist(r"D:\BaiduNetdiskDownload\train_3")    #r""是防止字符串转译
print (c)     #这里以list形式输出jpg格式的所有图像(带路径)
d=len(c)    #这可以以输出图像个数,如果你的文件夹下有698张图片,那么d为698
print("图片个数:",d)
 
 
data=numpy.empty((d,299,299,3)) #建立d*(299,299,3)的矩阵
while d>0:
    img=Image.open(c[d-1])  #打开图像
 
    #img_ndarray=numpy.asarray(img)
    img_ndarray=numpy.asarray(img,dtype='float64')/255  #将图像转化为数组并将像素转化到0-1之间
    print(img_ndarray.shape)
    data[d-1]=img_ndarray    #将图像的矩阵形式保存到data中
    d=d-1
print ("data.shape:",data.shape)
 

 

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值