将cifar10数据转成图片

#将cifar10转成图片

import numpy as np
import matplotlib.image as plimg
from PIL import Image
import pickle as p


def load_CIFAR_batch(filename):
    with open(filename, 'rb')as f:
        
        datadict = p.load(f, encoding='latin1')
        X = datadict['data']
        Y = datadict['labels']
        X = X.reshape(10000, 3, 32, 32)
        Y = np.array(Y)
        return X, Y


def load_CIFAR_Labels(filename):
    with open(filename, 'rb') as f:
        lines = [x for x in f.readlines()]
        print(lines)


if __name__ == "__main__":
    # 文件的路径
    load_CIFAR_Labels("./cifar-10-batches-py/batches.meta")
    imgX, imgY = load_CIFAR_batch("./cifar-10-batches-py/data_batch_1")
    print(imgX.shape)
    
    for i in range(1000):  
       
        imgs = imgX[i]
        img0 = imgs[0]
        img1 = imgs[1]
        img2 = imgs[2]
        i0 = Image.fromarray(img0)  # 从数据,生成image对象
        i1 = Image.fromarray(img1)
        i2 = Image.fromarray(img2)
        img = Image.merge("RGB", (i0, i1, i2))
        name = "img" + str(i) + ".png"
        img.save("cifar10_images/" + name, "png") 
        for j in range(imgs.shape[0]):
            img = imgs[j]
            name = "img" + str(i) + str(j) + ".png"
            plimg.imsave("cifar10_images/" + name, img)  

    

猜你喜欢

转载自blog.csdn.net/qq_41559533/article/details/83718910