6-4cifar10数据介绍读取处理(下)

 cv2.imwrite("{} {} {}".format(save_path,
                                      im_label_name,
                                      im_name.decode("utf-8")), im_data)

上面那行代码折腾半天,运行出来是结果写入不到文件夹中
正确写法

cv2.imwrite("{}/{}/{}".format(save_path,
                                      im_label_name,
                                      im_name.decode("utf-8")), im_data)

本文最后的代码时运行成功

# -*- encoding: utf-8 -*-
"""
@File    : readcifar10.py
@Time    : 2021-02-05 1:17
@Author  : XD
@Email   : [email protected]
@Software: PyCharm
"""
def unpickle(file):
    import pickle
    with open(file, 'rb') as fo:
        dict = pickle.load(fo, encoding='bytes')
    return dict
label_name = ["airplane",
              "automobile",
              "bird",
              "cat",
              "deer",
               "dog",
                "frog",
                "horse",
                "ship",
                "truck"
              ]

import glob
import numpy as np
import cv2
import os

train_list = glob.glob("E:\\pytorch\\006cifar10\\cifar-10-batches-py\\data_batch_*")
print(train_list)
save_path = "E:/pytorch/006cifar10/cifar-10-batches-py/TRAIN"
for l in train_list:
    print(l)
    l_dict = unpickle(l)
    print(l_dict.keys())

    for im_idx, im_data in enumerate(l_dict[b'data']):
        im_label = l_dict[b'labels'][im_idx]
        im_name = l_dict[b'filenames'][im_idx]
        print(im_label, im_name, im_data)
        im_label_name = label_name[im_label]
        im_data = np.reshape(im_data, [3, 32, 32])
        im_data = np.transpose(im_data, (1, 2, 0))

        # cv2.imshow("im_data",cv2.resize(im_data, (200, 200)))
        # cv2.waitKey(0)
        if not os.path.exists("{}/{}".format(save_path,
                                             im_label_name)):
            os.mkdir("{}/{}".format(save_path, im_label_name))

        cv2.imwrite("{} {} {}".format(save_path,
                                      im_label_name,
                                      im_name.decode("utf-8")), im_data)

效果

在这里插入图片描述
在这里插入图片描述

import pickle
def unpickle(file):
    with open(file, 'rb') as fo:
        dict = pickle.load(fo, encoding='bytes')
    return dict
label_name = ["airplane",
              "automobile",
              "bird",
              "cat",
              "deer",
              "dog",
              "frog",
              "horse",
              "ship",
              "truck"]

import glob
import numpy as np
import cv2
import os

train_list = glob.glob("E:/pytorch/006cifar10/cifar-10-batches-py/data_batch_*")
print(train_list)
save_path = "E:/pytorch/006cifar10/cifar-10-batches-py/TRAIN"

for l in train_list:
    print(l)
    l_dict = unpickle(l)
    # print(l_dict)
    print(l_dict.keys())

    for im_idx, im_data in enumerate(l_dict[b'data']):
        im_label = l_dict[b'labels'][im_idx]
        im_name = l_dict[b'filenames'][im_idx]
        print(im_label, im_name, im_data)
        im_label_name = label_name[im_label]
        im_data = np.reshape(im_data, [3, 32, 32])
        im_data = np.transpose(im_data, (1, 2, 0))

        # cv2.imshow("im_data",cv2.resize(im_data, (200, 200)))
        # cv2.waitKey(0)

        if not os.path.exists("{}/{}".format(save_path,
                                             im_label_name)):
            os.mkdir("{}/{}".format(save_path, im_label_name))

        cv2.imwrite("{}/{}/{}".format(save_path,
                                      im_label_name,
                                      im_name.decode("utf-8")), im_data)



































# data_list = glob.glob("/home/kuan/dataset/"
#                       "cifar-11-batches-py/data_batch*")
# for path in data_list:
#     data = unpickle(path)
#     for i in range(len(data[b"labels"])):
#
#         im_data = np.reshape(data[b"data"][i], (3, 32, 32))
#         im_data = np.transpose(im_data, (1, 2, 0))
#         im_name = data[b'filenames'][i].decode("utf-8")
#         im_label = label_name[data[b"labels"][i]]
#
#         if not os.path.exists("/home/kuan/dataset/cifar-11-batches-py/train/{}"
#                                   .format(im_label)):
#             os.mkdir("/home/kuan/dataset/cifar-11-batches-py/train/{}"
#                                   .format(im_label))
#
#         cv2.imwrite("/home/kuan/dataset/cifar-11-batches-py/train/{}/{}"
#                                   .format(im_label, im_name), im_data)

猜你喜欢

转载自blog.csdn.net/weixin_46815330/article/details/113706757