批量读取文件夹下的图片并保存在一个四维数组中

本文介绍如何使用Python和PIL库进行图片预处理,确保所有训练图片尺寸一致,适用于深度学习模型训练。通过读取文件夹内所有.jpg图片,转换并调整大小至299x299像素,标准化像素值至0-1区间,最终存储为四维数组,便于神经网络输入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在深度学习开发中,我们在网上找的现成的数据集,都是已经处理好了的,我们直接使用即可。但是如果我们想用自己的图片训练网络,会发现编译器总是报读入图片的shape大小不一致的情况。

在用来训练的图片数组中,一般都是四维的,比如(600,299,299,3),600表示在这个数组中一共有600张图片,299则是图片的宽高,3表示图片是彩色的。现在,我们来把自己文件夹下的所有的图片都读到一个数组中,并拥有类似的shape。

 

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)

 

现在,我们就可以拿任何的图片来创建自己的训练数据,然后来训练网络了。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

最强玩者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值