theano 训练样本制作(二)

来源:互联网 发布:卧龙进阶数据 编辑:程序博客网 时间:2024/06/05 03:59

之前有一篇博文写了这方面的内容

但是要自己先把图像数据做在txt里面

之前一篇的博文   http://blog.csdn.net/yeyang911/article/details/17523343

这篇博文可以直接将文件名列表的txt 导成数据并保存

注:当然这里文件名格式的定义需要根据自己的实际情况来确定,程序中文件名读取部分是不能运行的

#! /usr/bin/env python# -*- coding: utf-8 -*-import cv2import numpy as npimport randomimport gzipimport cPickleclass 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  ccdef 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  ccif __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压缩的文件。(比较占存储空间)

-----------------------------------------------------------------------------------------------

0 0
原创粉丝点击