您的位置:首页 > 其它

cifar10 数据集转换成图片中imsave()问题详解

2020-01-15 09:08 267 查看

`做cifar10 数据集转换成图片程序,发现许多现有程序运行过程中会有imsave()报错,目前许多解释未安装pillow库所致,本人经过验证发现,目前pip安装库后,仍会出现scipy.misc内没有imsave()的问题,研究发现根本问题在于scipy.misc已经将imsave(),imread弃用,现在代替使用为mageio库,有做cifar10 数据集转换成图片等过程的朋友可以尝试使用import imageio代替from scipy.misc import imsave,替代后目前可以使用代码如下:

import imageio
import numpy as np
import pickle

# 对数据集进行解压缩
def unpickle(file):
shujuji = open(file, 'rb')
dict = pickle.load(shujuji, encoding='latin1')
shujuji.close()
return dict

# 生成训练集图片,如果需要其他格式,只需要改图片后缀名即可。
for j in range(1, 6):
dataName = "data_batch_" + str(j)  # 此处一定要把数据集的12345放在与本py一起的一个文件夹内。
xuliehua = unpickle(dataName)#文件序列化
print(dataName + " is loading...")

for i in range(0, 10000):
img = np.reshape(xuliehua['data'][i], (3, 32, 32))  #xuliehua['data']为图片二进制数据
img = img.transpose(1, 2, 0)  # 读取image
picName = 'train/' + str(xuliehua['labels'][i]) + '_' + str(i + (j - 1)*10000) + '.jpg'  # Xtr['labels']为图片的标签,值范围0-9,本文中,train文件夹需要存在,并与脚本文件在同一目录下。
imageio.imwrite(picName, img)
print(dataName + " loaded.")

print("test_batch is loading...")

# 生成测试集图片
testxlh = unpickle("test_batch")
for i in range(0, 10000):
img = np.reshape(testxlh['data'][i], (3, 32, 32))
img = img.transpose(1, 2, 0)
picName = 'test/' + str(testxlh['labels'][i]) + '_' + str(i) + '.jpg'
imageio.imwrite(picName, img)
print("test_batch loaded.")

使用此代码需注意:
1、py文件与12345文件必须在同一文件夹内,否则改代码里的默认目录;
2、文件夹内建好train、test文件夹,否则仍改代码
具体如下图,CIFAR-10 to jpg.py为代码文件

  • 点赞
  • 收藏
  • 分享
  • 文章举报
hitsyan 发布了17 篇原创文章 · 获赞 4 · 访问量 3813 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: