在学习tensorflow的mnist和cifar实例的时候,官方文档给出的讲解都是一张张图片,直观清晰,当我们看到程序下载下来的数据的时候,宝宝都惊呆了,都是二进制文件,这些二进制文件还不小,用文本编辑器打开看也看不懂,要是将数据再现为图像,多好!

(1)CIFAR-10数据集介绍

① CIFAR-10数据集包含60000个32*32的彩色图像,共有10类。有50000个训练图像和10000个测试图像。 
数据集分为5个训练块和1个测试块,每个块有10000个图像。测试块包含从每类随机选择的1000个图像。训练块以随机的顺序包含这些图像,但一些训练块可能比其它类包含更多的图像。训练块每类包含5000个图像。 
②data——1个10000*3072大小的uint8s数组。数组的每行存储1张32*32的图像。第1个1024包含红色通道值,下1个包含绿色,最后的1024包含蓝色。图像存储以行顺序为主,所以数组的前32列为图像第1行的红色通道值。 
labels——1个10000数的范围为0~9的列表。索引i的数值表示数组data中第i个图像的标签。 
③数据集中包含另外1个叫batches.meta的文件。它也包含1个Python字典对象。有如下列元素: 
label_names——1个10元素的列表,给labels中的数值标签以有意义的名称。例如,label_names[0] == “airplane”, label_names[1] == “automobile”等。

(2)下载python版本的cifar数据

先给个cifar数据下载链接:http://www.cs.toronto.edu/~kriz/cifar.html 
链接上提到三个数据版本,分别是python,matlab,binary版本,分别适合python,matlab,C程序 
我们用python实现cifar数据转化为图像,当然要用Python版本的啦 
下载好了,我们就可以用下面的代码啦

(3)代码

# -*- coding:utf-8 -*-
import pickle as p
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as plimg
from PIL import Image
def load_CIFAR_batch(filename):
""" load single batch of cifar """
with open(filename, 'rb')as f:
datadict = p.load(f)
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("/data/cifar-10-batches-py/batches.meta")
imgX, imgY = load_CIFAR_batch("/data/cifar-10-batches-py/data_batch_1")
print imgX.shape
print "正在保存图片:"
for i in xrange(imgX.shape[0]):
imgs = imgX[i - 1]
if i < 100:#只循环100张图片,这句注释掉可以便利出所有的图片,图片较多,可能要一定的时间
img0 = imgs[0]
img1 = imgs[1]
img2 = imgs[2]
i0 = Image.fromarray(img0)
i1 = Image.fromarray(img1)
i2 = Image.fromarray(img2)
img = Image.merge("RGB",(i0,i1,i2))
name = "img" + str(i)
img.save("/data/images/"+name,"png")#文件夹下是RGB融合后的图像
for j in xrange(imgs.shape[0]):
img = imgs[j - 1]
name = "img" + str(i) + str(j) + ".png"
print "正在保存图片" + name
plimg.imsave("/data/image/" + name, img)#文件夹下是RGB分离的图像 print "保存完毕."

最新文章

  1. 实用图像处理入门 - 2 - Windows平台下编译openCV
  2. [转] Ubuntu 12.04下LAMP安装配置 (Linux+Apache+Mysql+PHP)
  3. Centos 6.x 系统下用yum安装Memcache
  4. SQL Server 索引列的顺序——真的没关系吗
  5. python学习之字典(Dictionary)练习
  6. C#温故而知新系列 -- 闭包
  7. 深入理解Redis系列之SpringBoot集成Redis
  8. spring、springMVC、mybatis配置文件
  9. oracle分区表彻底删除的办法,处理删不掉的不规则表名
  10. 【OJ】 : 容斥原理计算出 1&lt; =n &lt; 1e9 中是2,3,5倍数的整数的数量
  11. 查看eclipse版本信息
  12. webpack处理url资源的配置
  13. Visual Studio Code 调试 PHP
  14. 「DB」数据库事务的隔离级别
  15. Spring MVC 框架
  16. oracle的SQL语句中的(+)是干什么用的?
  17. Oracle中的一些查询语句及其执行顺序
  18. Spring核心技术(十五)——BeanFactory
  19. asm 与 cglib(整理的)
  20. bzoj 2251: 外星联络 后缀Trie

热门文章

  1. 用前序和中序重建二叉树 python
  2. 每天一个linux命令:【转载】more命令
  3. javascript进阶修炼之一——javascript必备操做
  4. 利用 ReSharper 自定义代码中的错误模式,在代码审查之前就发现并修改错误
  5. selectToUISlider
  6. CF 360E Levko and Game——贪心
  7. spring装载配置文件失败报错:org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException
  8. SQLServer中求两个字符串的交集(字符串以符号分隔)
  9. 批处理实现mysql的备份
  10. Spring security 如何设置才能避免拦截到静态资源