圖片儲存為cifar的Python資料格式

上次我們把用Python實現了cifar資料的視覺化,看到了這個cifar資料到底長啥樣,cifar資料視覺化的連結:
http://blog.csdn.net/zengxyuyu/article/details/53232533
我們用tensorflow可能是想訓練自己的圖片或者其他資料集,不止侷限於cifar資料集,我們應該怎樣把圖片轉成cifar資料集那種二進位制並用字典的資料結構儲存的資料集呢?我們暫時用上篇部落格從cifar資料集生成的圖片輸出作為這篇部落格圖片輸入,圖片數量100,是RGB彩色通道影象.
1.總覽
我們這次用到的Python庫或模組有(要先裝上這些庫哦)
(1) pillow:影象處理庫,用來讀個影象
(2) matplotlib:把從pillow讀到的影象轉化為陣列
(3) numpy:處理一下陣列,比如維度,合併陣列
(4) pickle:pickle模組實現了基本的資料序列和反序列化。通過pickle模組的序列化操作我們能夠將程式中執行的物件資訊儲存到檔案中去,永久儲存;通過pickle模組的反序列化操作,我們能夠從檔案中建立上一次程式儲存的物件。

pickle.dump(obj, file, [,protocol])
  註解:將物件obj儲存到檔案file中去。
pickle.load(file)
  註解:從file中讀取一個字串,並將它重構為原來的python物件。
  
2.步驟:
  (1) 將圖片讀出來
  (2)將圖片轉成陣列
  (3) 處理一下陣列,將所有圖片合併為一個陣列
  (4)用pickle序列化,存入文字
  
3.程式碼如下:

# -*- coding:utf-8 -*-
import pickle,pprint
from PIL import Image
import numpy as np
import os
import matplotlib.image as plimg
class DictSave(object):
def __init__(self,filenames):
self.filenames = filenames
self.arr = []
self.all_arr = []
print
def image_input(self,filenames):
for filename in  filenames:
self.arr = self.read_file(filename)
if self.all_arr==[]:
self.all_arr = self.arr
else:
self.all_arr = np.concatenate((self.all_arr,self.arr))
def read_file(self,filename):
im = Image.open(filename)#開啟一個影象
# 將影象的RGB分離
r, g, b = im.split()
# 將PILLOW影象轉成陣列
r_arr = plimg.pil_to_array(r)
g_arr = plimg.pil_to_array(g)
b_arr = plimg.pil_to_array(b)
# 將32*32二位陣列轉成1024的一維陣列
r_arr1 = r_arr.reshape(1024)
g_arr1 = g_arr.reshape(1024)
b_arr1 = b_arr.reshape(1024)
# 3個一維陣列合併成一個一維陣列,大小為3072
arr = np.concatenate((r_arr1, g_arr1, b_arr1))
return arr
def pickle_save(self,arr):
print "正在儲存"
# 構造字典,所有的影象詩句都在arr陣列裡,我這裡是個以為陣列,目前並沒有存label
contact = {'data': arr}
f = open('contact', 'w')
pickle.dump(contact, f)#把字典存到文字中去
f.close()
print "儲存完畢"
if __name__ == "__main__":
filenames = [os.path.join("images/", "img%d" % i) for i in xrange(0, 100)] #100個影象
ds = DictSave(filenames)
ds.image_input(ds.filenames)
ds.pickle_save(ds.all_arr)
print "最終陣列的大小:" str(ds.all_arr.shape)

4.執行結果
然後就可以看到contact檔案,如圖所示:
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
5.相關程式碼及資源

http://download.csdn.net/detail/zengxyuyu/9687989