基於最近鄰法手寫數字識別(內附python源碼)

本實驗代碼已上傳麪包多,請點擊購買,或者關注[全都是碼農]公衆號,回覆[最近鄰],限時免費獲取!python

實驗概述

本實驗皆在運用OpenCV、Python等工具採用適當的算法對手寫體數字進行識別與檢測,能夠提供訓練集與測試集進行訓練,並能夠輸入手寫字體進行測試檢驗。web

經過獨立的完成本實驗,能夠極大地提升本人對於Python、OpenCV的理解,掌握手寫數字的特徵提取技術和最近鄰模板匹配法。算法

環境說明

系統:window 10app

軟件:PyCharm Community Edition 2020.2.2 x64編輯器

語言:python 3.6函數

環境:cv2,numpy,matplotlib.pyplot,time工具

數據集

本數據集爲100張圖片,分別爲數字0-9,每一個數字10張圖片,8張訓練集,2張測試集。以下:學習

0-1 圖 1 數字零 1-1 圖 2 數字一
2-1 圖 3 數字二 3-1 圖 4 數字三

術語定義

訓練集:能夠訓練模型參數,使模型擬合於正確的預測函數。測試

測試集:經過訓練過的模型進行檢驗,評估最終模型泛化能力。字體

驗證集:用於調超參數,監控模型是否發生過擬合。

需求說明

實驗內容

\1. 學習利用行列掃描的方法獲取手寫數字的上、下、左、右位置的子程序。

\2. 設計手寫數字的特徵提取算法,並編寫對應特徵提取程序。

\3. 編寫基於最近鄰模板匹配的手寫數字識別程序。

實驗結果與分析

記錄輸入數字0-9各10個,程序運行後相應的識別結果,並對結果進行深刻分析。

\1. 記錄每一個樣品的特徵提取效果圖。

\2. 記錄該樣品對應的歸一化後的特徵值。

\3. 統計每一個數字正確識別率。並對錯誤識別的狀況進行深刻分析。

軟件設計

1、體系設計圖

img
img

函數清單

函數名 函數功能簡述 函數接口簡述
ImgToNp() 將圖片的路徑導入到矩陣中。 輸入:無 輸出:圖片路徑矩陣
outFeature() 處理特徵函數並貼標籤。 輸入:圖片路徑矩陣 輸出:訓練圖片矩陣集與標籤集
star() 程序按照預設好的結構進行循環測試與輸出。 輸入:訓練圖片矩陣集與標籤集 輸出:訓練結果
TestImgToNp() 輸入測試圖片,並轉化爲矩陣。 輸入:測試圖片地址。 輸出:測試圖片矩陣。
outfeatureImg() 輸出特徵圖與特徵值。 輸入:訓練圖片矩陣集 輸出:保存特徵圖與特徵值爲文件。\

代碼介紹

(一)Mainapp.py代碼

mainapp.py爲主程序,表1函數清單中的函數均包含於其中。

運行程序後,程序先行運用ImgToNp()函數將img文件夾中0-9文件夾裏的80個樣本圖片轉化爲矩陣保存於變量中並將其返回。

image-20201128202625504
image-20201128202625504
image-20201128202640461
image-20201128202640461
image-20201128202720385
image-20201128202720385
image-20201128202731144
image-20201128202731144

4、實驗結果

運行mainapp.py後,輸出框以下所示:

\1.   圖片地址以導入矩陣...... 

\2.   準備提取特徵...... 

\3.   特徵以存儲於feature矩陣...... 

\4.   準備貼標籤...... 

\5.   標籤以貼完...... 

\6.   是否輸出特徵圖與特徵值?y/n: 

輸入y時,程序將輸出80張樣本的特徵值與特徵圖,分別存儲於」./fandimg/{0-9}」,以及」./fandimg/featureArray/{0-9}」中。以下圖:

4imgimg

程序繼續運行,輸出框輸出:
1. 3-9.bmp 這張圖判斷錯誤了,系統判斷爲:1 最接近的三個結果爲:[[3. 7. 1.]]可是正確結果爲:3  
2. 4-9.bmp 這張圖判斷錯誤了,系統判斷爲:1 最接近的三個結果爲:[[1. 1. 1.]]可是正確結果爲:4  
3. 5-10.bmp 這張圖判斷錯誤了,系統判斷爲:1 最接近的三個結果爲:[[5. 1. 1.]]可是正確結果爲:5  
4. 6-10.bmp 這張圖判斷錯誤了,系統判斷爲:1 最接近的三個結果爲:[[1. 1. 1.]]可是正確結果爲:6  
5. 7-9.bmp 這張圖判斷錯誤了,系統判斷爲:1 最接近的三個結果爲:[[1. 1. 1.]]可是正確結果爲:7  
6. 8-9.bmp 這張圖判斷錯誤了,系統判斷爲:3 最接近的三個結果爲:[[8. 9. 3.]]可是正確結果爲:8  
7. 8-10.bmp 這張圖判斷錯誤了,系統判斷爲:9 最接近的三個結果爲:[[8. 9. 9.]]可是正確結果爲:8  
8. 9-9.bmp 這張圖判斷錯誤了,系統判斷爲:1 最接近的三個結果爲:[[9. 7. 1.]]可是正確結果爲:9  


f

相關文章
相關標籤/搜索