画像をpkl形式のファイルに生成する(多層ループ)
6237 ワード
このブログは前のブログの書き換えです.以前のブログでは、Python PIL、cPickleを使用して画像データベースを読み取り、保存していました.まず、すべてのピクチャの枚数を統計して、サンプルを格納するベクトルとラベルベクトルを初期化します.
画像はdataの下に置かれた2層目のファイルで、その中で自分のファイルの違いは、自分でループを調整します.Pythonコードは以下の通りです.
kは、olivettifacesおよびolivettifacesを初期化するためのピクチャの合計枚数である.私はロードした表情の画像で、ラベル値は0~5に設定されています.
サンプルとラベルデータが生成され、下からpkl形式のファイルに変換されます.Pythonコードは以下の通りです.私はここで訓練セット、検証セット、テストセットを分けました.
pkl形式の読み込みを検証するファイルコード:
画像はdataの下に置かれた2層目のファイルで、その中で自分のファイルの違いは、自分でループを調整します.Pythonコードは以下の通りです.
import cPickle
import os
import json
import pylab
import numpy
from PIL import Image
k = 0;
for filename1 in os.listdir(r'data'):
print filename1
filename1 = 'data/' + filename1
#
# fileList = os.listdir(path)
# allFile = []
# for fileName in fileList:
# filePath = os.path.join(path, fileName)
# if os.path.isdir(filePath):
# dirList(filePath)
# allFile.append(filePath)
for filename2 in os.listdir(filename1):
print filename2
filename2 = filename1 + '/' +filename2
for filename3 in os.listdir(filename2):
print filename3
if(filename3!='Thumbs.db'):
k = k + 1
# k
k = k * 10
print k
kは、olivettifacesおよびolivettifacesを初期化するためのピクチャの合計枚数である.私はロードした表情の画像で、ラベル値は0~5に設定されています.
i = 0;
j=0;
label =0;
olivettifaces=numpy.empty((k,28*28))
olivettifaces_label=numpy.empty(k)
# j 。
while(j<10):
for filename1 in os.listdir(r'data'):
print filename1
filename1 = 'data/' + filename1
for filename2 in os.listdir(filename1):
print filename2
label = label + 1
if(label == 7):
label = 1
filename2 = filename1 + '/' +filename2
for filename3 in os.listdir(filename2):
print filename3
if(filename3!='Thumbs.db'):
filename3 = filename2 + '/' +filename3
imgage = Image.open(filename3)
imgage = imgage.resize((28,28))
img_ndarray = numpy.asarray(imgage, dtype='float64')/256
olivettifaces[i]=numpy.ndarray.flatten(img_ndarray)
olivettifaces_label[i]=label-1
i = i + 1
j = j+1
print i
サンプルとラベルデータが生成され、下からpkl形式のファイルに変換されます.Pythonコードは以下の通りです.私はここで訓練セット、検証セット、テストセットを分けました.
olivettifaces_label=olivettifaces_label.astype(numpy.int)
write_file=open('olivettifaces.pkl','wb')
cPickle.dump([[olivettifaces[0:28000],olivettifaces_label[0:28000]],
[olivettifaces[10001:13000],olivettifaces_label[10001:13000]],
[olivettifaces[13001:16499],olivettifaces_label[13001:16499]]],write_file,-1)
write_file.close()
pkl形式の読み込みを検証するファイルコード:
read_file=open('olivettifaces.pkl','rb')
faces1,faces2,faces3=cPickle.load(read_file)
read_file.close()
face,label = faces1
img0=face[4].reshape(28,28)
pylab.imshow(img0)
pylab.gray()
pylab.show()
print face[28*27:28*28]
print label[1:165]