基於K 近鄰演算法的手寫字元識別

2021-08-31 07:03:38 字數 799 閱讀 5525

收集資料集,包括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...