之前有一篇博文寫了這方面的內容
但是要自己先把影象資料做在txt裡面
之前一篇的博文
這篇博文可以直接將檔名列表的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)
s = 'f:/'#路徑
data = data_pro(s,x1,y1,x2,y2)#獲取資料位置資訊
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壓縮的檔案。(比較佔儲存空間)
opencv 訓練樣本
分類器的訓練以分為以下三部進行 1 樣本的建立 2 訓練分類器 3 利用訓練好的分類器進行目標檢測。對檢測物體要確定其屬性 是否為絕對剛性的物體,也就是檢測的目標是乙個固定物體,沒有變化 如特定公司的商標 這樣的物體只要提供乙份樣本就可以進行訓練。但絕大數時候我們想進行訓練的目標是非絕對剛性的物體,...
opencv haar訓練 訓練樣本(4)
1.海爾訓練 現在,我們使用haartraining.exe來訓練我們自己的分類器。訓練語句如下 usage haartraining data vec bg npos nneg nstages nsplits mem sym default nonsym minhitrate maxfalseal...
opencv haar訓練 訓練樣本(4)
1.海爾訓練 現在,我們使用haartraining.exe來訓練我們自己的分類器。訓練語句如下 usage haartraining data vec bg npos nneg nstages nsplits mem sym default nonsym minhitrate maxfalseal...