theano 训练样本制作(二)

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

但是要自己先把图像数据做在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压缩的文件。(比较占存储空间)

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值