之前有一篇博文写了这方面的内容
但是要自己先把图像数据做在txt里面
之前一篇的博文 http://blog.csdn.net/yeyang911/article/details/17523343
这篇博文可以直接将文件名列表的txt 导成数据并保存
注:当然这里文件名格式的定义需要根据自己的实际情况来确定,程序中文件名读取部分是不能运行的
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import cv2
import numpy as np
import random
import gzip
import cPickle
class DateP(object):
def __init__(self,in1,in2):
self.in1 = in1
self.in2 = in2
def date_process(self):
label=[]
date=[]
with open(self.in1) as f:#读取txt里面的文件名
for line in f:
a=line.split(';')
c=int(a[7])
if c<10:
mm='0000'+str(c)
elif c>=10:
mm='000'+str(c)
label.append(str(c))
s = 'F:/'#路径
data = data_pro(s,x1,y1,x2,y2)#获取数据位置信息
date.append(data)
sss1=np.asarray(label,dtype=int)
sss=np.asarray(date,dtype=float)
sss/=255
lens = len(date)
sss=sss.reshape(lens,self.in2)
ee1=zip(sss,sss1)
random.shuffle(ee1)
dd1,dd2=map(list,zip(*ee1))
ddd1=np.asarray(dd1,dtype=float)
ddd2=np.asarray(dd2,dtype=int)
cc=ddd1,ddd2
return cc
def data_pro(src,x1,y1,x2,y2):
img_ = cv2.imread(src)
dd = img_[x1:x2,y1:y2]#获取roi
size = (28,28)#resize尺寸
img = cv2.resize(dd,size)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#转换成灰度图像
bb = np.zeros((img.shape[0],img.shape[1]), dtype=img.dtype)
bb[:,:] = gray[:,:]
cc = bb.reshape(1,img.shape[0]*img.shape[1])
return cc
if __name__ == '__main__':
a1="11.txt"#txt文件名列表
oo1=DateP(a1,784)
o1 = oo1.date_process()
d=o1
p1=cPickle.dumps(d,2) #生成pkl.gz文件就和theano中的一样
s=gzip.open('cnn.pkl.gz','wb')#要保存的文件路径,这里用了gzip,压缩文件
s.write(p1)
s.close()
print 'ok'
----------------------------------------------------------------------------------------------
如果因为数据量大不能导致gzip.open('cnn.pkl.gz','wb'')不能使用的
可以用下面方式代替
f = open('cnn.pkl', 'wb')
cPickle.dump(d,f,2)
f.close()
保存的不为.gz压缩的文件。(比较占存储空间)
-----------------------------------------------------------------------------------------------