深度学习|批处理图像保存到四维数组中

将文件夹中不同尺寸的图像保存到四维的数组中,作为数据集

方法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

 

你可能感兴趣的:(python,python,opencv)