import pickle
from pathlib import Path
import os
import matplotlib.pyplot as plt
from scipy import misc
dataset_dir = Path('D:/Data/cifar-10-batches-py/') #更改此处路径 path/to/you/cifar-10-batches-py
# 获取所需数据文件
def get_file_list(file_dir):
file_list = []
for i in os.listdir(str(file_dir)):
if i.startswith('data'):
file_list.append(i)
return file_list
# 获取字典数据
def unpickle(file):
with open(file,'rb') as p:
dict = pickle.load(p, encoding='bytes')
return dict
def show_pic(img):
_, ax = plt.subplots()
ax.imshow(img)
plt.show()
if __name__ == '__main__':
file_list = get_file_list(dataset_dir)
for file in file_list:
# print (file)
# 解压数据
data_dict = unpickle(str(dataset_dir / file))
# label_name
class_name = unpickle('D:/Data/cifar-10-batches-py/batches.meta') # 更改此处路径 path/to/you/batches.meta
label_names = class_name[b'label_names']
print(label_names[1])
# 获取 data 和 labels
data = data_dict[b'data'].reshape(10000, 3, 32,32)
labels = data_dict[b'labels']
# 转换shape 为 10000 x 3 x 32 x 32
for i in range(len(data)):
label = labels[i]
# print(label)
# print(data[i].shape)
img = data[i].transpose((1, 2, 0))
# # print(data)
# plt.imshow(img)
# plt.show()
# save_dir = str()
# 创建各个类文件夹
if not os.path.exists(str(dataset_dir / ("%s"% label_names[label]))): # label_names[label] 可修改为 label
os.mkdir(str(dataset_dir / ("%s"% label_names[label])))
misc.imsave(str(dataset_dir / ("%s"% label_names[label]) / ('%s_%d.png' % (label, i))), img)版权声明:本文为weixin_42063746原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。