收集資料集,包括trainingdigits和testdigits資料夾,資料夾下是字元影象的二進位制文字檔案,大小為32*32,如下圖所示:
首先介紹listdir,它能返回資料夾路徑下的所有子檔案:
import os
from os import listdir
listdir(r'c:\users\administrator\desktop\python學習\6.pandas學習')
執行結果:
['.ipynb_checkpoints',
'admissions.csv',
'pandas處理丟失資料.ipynb',
'pandas多級索引.ipynb']
將二進位制影象轉換為一行向量
#將32*32的二進位制影象轉換為1*1024的向量
import numpy as np
def img2vector(filename):
vector = np.zeros((1,1024))
f = open(filename)
for i in range(32):
line = f.readline()
for j in range(32):
vector[0,i*32+j] = int(line[j])
return vector
手寫字元識別
個人認為,主要原因在於資料的收集較為困難,合成的方式不是很適合手寫字元的生成。第二,手寫字元存在過分和粘連等各種情況,但是現階段的技術而言,只要資料足夠,可以採用lstm ctc的方式去解決,不單獨獲取單個字元,而是直接採用行識別。手寫字元識別要想使用到產品中,關鍵還是要找好具體的業務點,比如,個人...
OpenCV手寫數字字元識別 基於k近鄰演算法
本程式主要參照 基於opencv的離線手寫字元識別技術 實現了,對於手寫阿拉伯數字的識別工作。識別工作分為三大步驟 預處理,特徵提取,分類識別。預處理過程主要找到影象的roi部分子影象並進行大小的歸一化處理,特徵提取將影象轉化為特徵向量,分類識別採用k 近鄰分類方法進行分類處理,最後根據分類結果完成...
機器學習 k 近鄰演算法(手寫字識別)
knn演算法在簡單二維資料上計算時 d 根號 x0 x 2 y0 y 2 這裡被推廣到1024維,將32 32二進位制當成1 1024的向量。計算上和二維是一樣的。缺點是計算量太大了。usr bin python coding utf 8 用knn識別手寫數字 from numpy import i...