import cv2
import numpy as np
import os
import pickle
# 解压文件,返回解压缩后的字典
def unpickle(file):
with open(file, 'rb') as f:
dicts = pickle.load(f, encoding='bytes')
return dicts
# 创建文件夹
data_dict = {0:"airplane",1:"automobile",2:"bird",3:"cat",4:"deer",5:"dog",6:"frog",7:"horse",8:"ship",9:"truck"}
for i in range(len(data_dict)):
# 以f开头的表示字符串内支持大括号内的python表达式
path1 = f"train/{data_dict[i]}"
path2 = f"test/{data_dict[i]}"
if not os.path.isdir(path1):
os.makedirs(path1)
if not os.path.isdir(path2):
os.makedirs(path2)
for j in range(1, 6):
dataName = "data_batch_" + str(j)
Xtr = unpickle(dataName) # 解压文件
print(dataName + "is loading")
for i in range(10000):
# 加个b表示bytes对象
img = np.reshape(Xtr[b'data'][i], (3, 32, 32))
img = img.transpose(1, 2, 0)
picName = "train/" + str(data_dict[Xtr[b'labels'][i]]) + "/" + str(i + (j-1)*10000) + ".jpg"
cv2.imwrite(picName, img)
print(dataName + "loaded")
print("test is loading")
# 生成测试文件
testXtr = unpickle("test_batch")
for i in range(10000):
img = np.reshape(testXtr[b'data'][i], (3, 32, 32))
img = img.transpose(1, 2, 0)
picName = "test/" + str(data_dict[testXtr[b'labels'][i]]) + "/" + str(i) + ".jpg"
cv2.imwrite(picName, img)
print("test loaded")
cifar-10保存图片
最新推荐文章于 2023-09-03 20:44:41 发布