将文件夹中不同尺寸的图像保存到四维的数组中,作为数据集
方法1:
import numpy as np
import tensorflow as tf
from skimage import io
import os
import cv2
import matplotlib.pyplot as plt
from PIL import Image #导入Image模块
def get_imagelist(path):
"""
此函数读取特定文件夹下的jpg格式图像,返回图片所在路径的列表
函数输入:
-path:图像文件夹路径
函数输出:
-imglist:图片所在路径列表
"""
imglist=[os.path.join(path,f) for f in os.listdir(path) if f.endswith('.jpg') ]
return imglist
def img_bprocess(path,m,n):
"""
该函数返回图像组成的数组
函数输入:
-path:图像文件路径
-m:图像长
-n:图像宽
函数输出:
X_train:输出数据集数组.size(d,m,n,3)
"""
imglist=get_imagelist(path)
#print (imglist) #这里以list形式输出jpg格式的所有图像(带路径)
d=len(imglist) #这可以以输出图像个数,如果你的文件夹下有500张图片,那么d为500
#print("图片个数:",d)
X_train=np.empty((d,m,n,3))#建立d*(m,n,3)的矩阵
while d>0:
img=Image.open(imglist[d-1]) #打开图像
img_ndarray=np.asarray(img) #将图像转化为数组
#print(img_ndarray.shape)
#将所有图像reshape为(m,n,3)
img_ndarray=np.resize(img_ndarray,(m,n,3))
#将图像的矩阵形式保存到(d,m,n,3)四维数组中
X_train[d-1]=img_ndarray
d=d-1
return X_train
引用函数的实例:
import numpy as np
import tensorflow as tf
from skimage import io
import os
import cv2
import matplotlib.pyplot as plt
from data_set_creat import img_bprocess
path='E:/vscodeproject/practice_project/datasets/deep_nn/train/'
X_train=img_bprocess(path,224,224)
结果:
方法2:
def img_bcreat_2(path,m,n):
"""
函数输入:
-path:图像文件路径
-m:图像长
-n:图像宽
函数输出:
X_train:输出数据集数组.size(d,m,n,3)
"""
imglist=os.listdir(path)
d=len(imglist)
X_train=np.empty((d,m,n,3))
i=0
for img in imglist:
img_path=os.path.join(path,img)
img=cv2.imread(img_path)
data=cv2.resize(img,(m,n),interpolation=cv2.INTER_CUBIC)
X_train[i][:,:,:]=data
i=i+1
return X_train