# -*- coding: UTF-8 -*-
#@Time : 2020/4/28 @Author : SUNLIN
import os
class ImageClass():
"Stores the paths to images for a given class"
def __init__(self, name, image_paths):
self.name = name
self.image_paths = image_paths
def __str__(self):
return self.name + ', ' + str(len(self.image_paths)) + ' images'
def __len__(self):
return len(self.image_paths)
def get_image_paths(facedir):
image_paths = []
if os.path.isdir(facedir):
images = os.listdir(facedir)
image_paths = [os.path.join(facedir,img) for img in images]
return image_paths
def get_dataset(path, has_class_directories=True):
dataset = []
path_exp = os.path.expanduser(path)
classes = [path for path in os.listdir(path_exp) \
if os.path.isdir(os.path.join(path_exp, path))]
classes.sort()
nrof_classes = len(classes)
for i in range(nrof_classes):
class_name = classes[i]
facedir = os.path.join(path_exp, class_name)
image_paths = get_image_paths(facedir)
img_class=ImageClass(class_name, image_paths)
dataset.append(ImageClass(class_name, image_paths)) #dataset里面是一个类别的对象
return dataset
def get_image_paths_and_labels(dataset):
image_paths_flat = []
labels_flat = []
for i in range(len(dataset)):
image_paths_flat += dataset[i].image_paths
labels_flat += [dataset[i].name]* len(dataset[i].image_paths)
return image_paths_flat,labels_flat
#获取img路径下的所有的图片,以及每张图片对应的标签
if __name__=='__main__':
dataset=get_dataset('img')
paths, labels = get_image_paths_and_labels(dataset)
print(paths,labels)
[‘img\mayiyan\1.jpg’, ‘img\mayiyan\2.jpg’, ‘img\mayiyan\3.jpg’, ‘img\mayiyan\4.jpg’, ‘img\mayiyan\5.jpg’, ‘img\mayiyan\6.jpg’, ‘img\mayiyan\7.jpg’, ‘img\nanase\1.jpg’, ‘img\nanase\2.jpg’, ‘img\nanase\3.jpg’, ‘img\nanase\4.jpg’, ‘img\nanase\5.jpg’, ‘img\nanase\6.jpg’, ‘img\nanase\7.jpg’] [‘mayiyan’, ‘mayiyan’, ‘mayiyan’, ‘mayiyan’, ‘mayiyan’, ‘mayiyan’, ‘mayiyan’, ‘nanase’, ‘nanase’, ‘nanase’, ‘nanase’, ‘nanase’, ‘nanase’, ‘nanase’]